JavaScript:BannerPlugin.js导致错误:str.indexOf 不是一个函数



在我的 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 })

最新更新