2014-11-24 110 views
4

我一直在努力一段时间,现在出现了一个我认为是由Webpack引起的问题。基本上,我有一个基于Node的应用程序,我捆绑Webpack服务于客户端(这是一个基于ReactJS的应用程序)。当我安装Tabletop NPM软件包和require时,出现问题。Webpack导致包输出中出现语法错误

当尝试加载的WebPack创建bundle.js在浏览器中,我得到一个语法错误:

Uncaught SyntaxError: Unexpected identifier

其抱怨这一行bundle.js

target[capName] = __webpack_require__(387)(""path + '/' + name);

经过一番挖掘之后,我发现这一行起源于Hoek库中的一行(这是T的一个子依赖abletop):

target[capName] = require(path + '/' + name);

显然的WebPack做了一些时髦这里。

虽然我还没有能够找出原因。桌面包括NodeJS使用的an example,我能够使用Webpack并运行得很好。

我也克隆Hoek和Webpacke'd它没有看到任何像上述的非法转换。

现在,我不确定这是Webpack,Hoek还是Tabletop问题,这就是为什么我在这里发布它。

我发现没有相关的问题,在这里或GH。

所有帮助表示感谢!

+0

这是一个动态需求问题。默认情况下,短小的webpack不支持动态需求(例如:require(not +'a'+ fixed + path);)然而,可以使用插件教它如何处理它们。请参阅:https://github.com/webpack/webpack/issues/118和https://github.com/webpack/webpack/search?q=dynamic+require&type=Issues&utf8=%E2%9C%93 – generalhenry 2014-11-24 21:25:33

+0

由于代码是由webpack生成的,这显然是一个bug,应该在Github上报告。请同时发布您的配置,因为我认为它是由特定选项造成的。 – 2014-11-24 21:49:13

+0

感谢您的信息。我同意这是一个错误@jhnns,但正如@generalhenry提供的链接所示,我显然不是第一个体验这一点的人。 我已经意识到Tabletop有一个过时的'request'依赖 - 我要求桌面升级它并查看它是如何工作的。完成后会发布。 – 2014-11-25 09:11:04

回答

0

由于上面显示的动态需求行,导致出现hoek程序包的过期嵌套依赖关系。这在[email protected]中被删除。

不幸的是,桌面的request dep具有hawk的过时依赖关系,这依赖于hoek。我分叉request和被撞的版本,但现在我在浏览器中获取的负载不同的错误:

Uncaught Error: Cannot find module "net"

net是一个核心节点模块,所以我怀疑有一些事情在这里,因为我们”重新Web服务器JS在浏览器中运行它。不过,这是一个不同的问题,所以我认为这里的原始问题的答案..

但我仍然无法使用桌面。我可能必须对它进行浏览并直接使用该捆绑包。

0

加入

plugins.push(new webpack.DefinePlugin({ "global.GENTLY": false }));node: {__dirname: true}

时的WebPack的配置修正superagent用的WebPack使用我用superagent取得了一些成功。

当使用request库,加入以下的WebPack的配置:

node: { 
    "net": "empty" 
} 

修复Uncaught Error: Cannot find module "net"

不过,我现在不得不与哑剧库,该库的request依赖问题:Error: ENOENT, no such file or directory '/types/mime.types'

斯文,有你有任何成功的固定request用的WebPack?

+0

我在'/ types /'中触摸过'mime.types'和'node.types',但这看起来似乎是正确的方法。 – Nodu 2014-12-03 04:33:57

+0

感谢您的信息。不,我还没有尝试过。我最终在我的Gulpfile中使用了Tabletop,而不是在我的客户端应用程序中,这避免了与webpack相关的问题。 – 2014-12-04 09:06:28