Uglifyjs意外的令牌名称错误

时间:2018-04-11 07:21:15

标签: reactjs bundle uglifyjs

附件是我尝试将项目捆绑生产时收到的图片。我收到了Unexpected token name <<Object>>, expected punc <<,>>消息,如图所示。

Terminal output of error

不确定问题是什么,但我尝试使用uglify-es和uglify-js并获得相同的错误。我甚至尝试使用es6 +代码创建一个简单的应用程序,以查看uglify-js是否有效。因此,互联网上的一些旧线程提到uglify-js不会处理es6 +代码现在可能无关紧要。我也读到某个地方,最新版本(3.x)确实支持它,但还没有能够确认。

我很想展示一些代码,但不确定我需要展示哪些相关代码。根据图像,它还提到了line,col,pos等......但是该行上的代码并不是从提到的col号开始的。

我会在调查时更新这篇文章,但任何提示或想法都会很棒!

2 个答案:

答案 0 :(得分:2)

所以经过一番深入研究后,问题就解决了。看起来我在非优化的包await _saga.Match(s => null != s.RemainingSteps);中看到的1665行并不是我需要看的(显然因为列索引已经关闭)。

因此,我决定输出FuseBox正在处理的捆绑生成代码,事实上它实际上是不同的。这是我在app.js node_modules/fuse-box/quantum/plugin/BundleWriter.js内添加的行,用于输出内容,以便我可以清楚地阅读。

uglifyBundle function

bundle.txt中的输出是问题,我的实际TypeScript代码如下所示:

fs.writeFile('bundle.txt', bundle.generatedCode); 

所以我查看了我的// bundle.txt line 1665 this.wholesalerSettings = [object Object] // actual project code constructor() { this.wholesalerSettings = process.env.WHOLESALERSETTINGS; this.API = this.setHostUrl(); } 文件,发现我没有正确解析json对象。

fuse.ts

一旦我用public get wholesalerSettings() { const wholesaler = require(`./src/~/wholesalers/${this.wholesaler}/config.json`); return JSON.stringify(wholesaler); } // then down in the environment plugin EnvPlugin({ WHOLESALERSETTINGS: this.wholesalerSettings, IMAGE_PATH: this.imagePath }), 正确解析了对象,它就完美地工作了,因为JSON.stringify现在是一个JSON字符串而不是一个Object。

我第一次真正处理devops的东西,但很有趣,同时又非常紧张。我想我学到的主要内容是当你处理工具和第三方工具时(FuseBox使用uglify-js)然后你需要仔细查看给予该工具的输入,而不是像我那样输出起初。

答案 1 :(得分:0)

UglifyJS表示它看到Object期待,,所以我们可以推断:

  • 您编写的代码(或者在uglifyJS处理之前由其他工具生成的代码,例如babel?虽然您可能不会使用babel,因为您的uglifyJS直接处理es6)是&#34; {{1} }&#34;发生错误的地方。
  • 它期待Object,因此错误发生在某些地方,例如多变量声明,,或对象/数组定义,let foo, bar {{1} }