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

时间:2018-03-09 08:48:49

标签: javascript

在我的React应用中,执行npm run build会导致:

Module parse failed: ...\node_modules\npm\bin\npm-cli.js Unexpected character '#' (1:0)

根据this StackOverflow answer#!/usr/bin/env node中的第一行npm-cli.js就是问题所在。要解决这个问题,我可以使用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_modules\webpack\lib\BannerPlugin.js:9
    if(str.indexOf("\n") < 0) return "/*! " + str + " */";
           ^

TypeError: str.indexOf is not a function
  at wrapComment (...\node_modules\webpack\lib\BannerPlugin.js:9:9)
  ...

阅读this StackOverflow question中的评论,我得出结论:str不是有效的对象。 如何解决此问题而无需修改 BannerPlugin.js ,或完全绕过BannerPlugin?

修改1:以下是整个webpack.config.dev.jswebpack.config.prod.js作为Pastebin。 webpack的版本应为&#34; webpack@1.14.0&#34;在webpack package.json中找到(npm list webpack无效)。

编辑2 :我绕过了BannerPlugin as seen here的使用。

1 个答案:

答案 0 :(得分:-1)

我知道它已经很旧了,但是我自己发现了它,所以对于其他任何人,我都怀疑您的旧版BannerPlugin具有新的参数布局。对于webpack 1,它将横幅广告作为第一个参数(未命名)。从2或3开始,需要一个对象。

对您来说,这将是:

.MaximumScale = ActiveSheet.Range("Axis_max").Value
.MinimumScale = ActiveSheet.Range("Axis_min").Value

您将拥有Webpack 3:

new webpack.BannerPlugin('#!/usr/bin/env node', { raw: true })