2017-04-14 48 views
1

我使用的WebPack加载依赖一个错误。和依赖性的一个是这样写如下:的WebPack报告有关意外的字符“#”

#! /usr/bin/env node 

'use strict' 

var Parser = require('jsonparse') 
    , through = require('through') 

的WebPack给了我下面的错误:

ERROR in ./~/JSONStream/index.js 
Module parse failed: /Project/node_modules/JSONStream/index.js Unexpected character '#' (1:0) 
You may need an appropriate loader to handle this file type. 
| #! /usr/bin/env node 

看来,性格#不被认可的WebPack。有没有一个加载器可以用来加载这种js文件?

+0

确保节点的二进制在你的环境中的路径和删除行'#!/usr/bin/env节点“并查看它是否有效。 –

+0

删除该行工作正常,但它是第三方库我无法更改其源代码。 –

+0

您可以使用[家当装载机(https://github.com/javascriptismagic/shebang-loader)。 –

回答

2

Shebang#!/usr/bin/env node表明,这是一个可执行的脚本,这不应该是在同一时间的模块。库文件和可执行文件应该是分开的,因为CLI只是一种使用库的方式,如果你自己使用库,你当然不希望你的应用程序中包含CLI部分。

无论如何,仍有办法解决。您可以使用webpack issue #2168中提到的shebang-loader。只需将其添加到您的.js规则中即可删除该行。

+1

你能举个例子吗?有很多麻烦得到这个装载机的工作和回购没有任何示例,这是没有用的,因为行(var命令=要求(“shebang!../ bin/command”);)导致此错误错误:无法找到模块'家当!../斌/命令'。 –

+0

这是在尝试在./node_modules/fsevents/node_modules/rc/index.js中使用shebang-loader 错误时出现的错误。 模块解析失败:/ Users/joseph/Documents/WebDevWorkspace/mvp_frontend/node_modules/fsevents /node_modules/rc/index.js意外的字符“#”(1:0) 您可能需要适当的加载程序来处理此类文件。 | #!/usr/bin/env节点 | var cc = require('./ lib/utils') | var join = require('path')。join 它在一个node_modules文件夹中,所以我不想只是去删除这行,任何帮助都会很棒,谢谢 –

+1

@ JMStudios.jrichardson既然webpack 2你不能省略'-loader'后缀,它会从字面上解析加载器。它会是'require(“shebang-loader!./ bin/command”)'或者你可以将它添加到你的webpack配置文件的'.js'规则中。 '{test:/\.js$/,use:['babel-loader','shebang-loader']}'。 –