在我的 React 应用程序中,执行npm run build
会导致:
Module parse failed: ...node_modulesnpmbinnpm-cli.js Unexpected character '#' (1:0)
因此,根据这个StackOverflow答案,npm-cli.js
中#!/usr/bin/env node
的第一行是问题。为了解决这个问题,我可以使用BannerPlugin(docs(,我做到了:
位置: webpack.config.prod.js
/webpack.config.dev.js
module.exports = {
...
plugins: [
...
new webpack.BannerPlugin({
banner: "#!/usr/bin/env node",
raw: true
})
],
...
};
现在,再次执行npm run build
会导致:
...node_moduleswebpacklibBannerPlugin.js:9
if(str.indexOf("n") < 0) return "/*! " + str + " */";
^
TypeError: str.indexOf is not a function
at wrapComment (...node_moduleswebpacklibBannerPlugin.js:9:9)
...
阅读了这个 StackOverflow 问题中的评论,我得出结论,str
不是一个有效的对象。如何在无需修改的情况下解决此问题 BannerPlugin.js
,还是完全绕过横幅插件的使用?
编辑 1:这是整个 webpack.config.dev.js 和 webpack.config.prod.js 作为 Pastebin。webpack 的版本应该是 "webpack@1.14.0
",如在 webpack package.json
中找到的那样(npm list webpack
不起作用(。
编辑2:我已经绕过了BannerPlugin的使用,如下所示。
这现在已经很旧了,但只是我自己找到了它,所以对于其他任何人,我怀疑您拥有旧版本的 BannerPlugin 的新参数布局。 对于 webpack 1,它采用横幅作为第一个参数,而不是命名。 从 2 或 3 开始,它需要一个对象。
对您来说,这将是:
new webpack.BannerPlugin('#!/usr/bin/env node', { raw: true })
Webpack 3 将是你所拥有的:
new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true })