Angular 2 prod build - Uglify错误调试

时间:2016-12-02 18:30:43

标签: angular angular-cli

使用Angular 2(cli),当运行ng build --prod时,我得到一个非常奇怪的错误,这让我相信这根本不是错误。

他说这个文件的第5行有问题:

    import { Injectable } from '@angular/core';
    import * as io from "socket.io-client";

    @Injectable()
    export default class SocketService {

        socket;
        //
        // constructor() {}
        //
        init() {
        //     this.socket = io('localhost:3000');
        }
    }

它给出了这个错误:

ERROR in main.b1e7bf5cf9ed04b8ff8d.bundle.js from UglifyJs
SyntaxError: Unexpected token: name (SocketService) 
[/Users/kewinbrandsma/Projects/TradeJS/~/angular2-template-loader!/Users/kewinbrandsma/Projects/TradeJS/src/client/app/services/socket.service.ts:5,0][main.b1e7bf5cf9ed04b8ff8d.bundle.js:3265,4

使用ng服务器(开发模式)运行它时完全没有错误并且工作正常。所以它真的是UglifyJS不喜欢的东西..

错误堆栈显示'预编译的bundle.js'的行号。 (main.b1e7bf5cf9ed04b8ff8d.bundle.js:3265,4)但我似乎无法找到该文件,因为它可能仍然只存在于内存中。

它是否在构建失败后总是被销毁,或者即使uglify抱怨也有办法写入磁盘?因为它无法调试Uglify错误

似乎有https://github.com/angular/angular-cli/issues/1333

的东西

所以现在,只是运行1(没有缩小)构建,我在webpack-build-production.js中完全禁用了Uglify。但是这个文件存在于angular node_modules中,所以它根本不是解决方案。

1 个答案:

答案 0 :(得分:0)

经过深入挖掘后,我发现设置tsconfig到目标:“es5”解决了它。我遇到的问题是,打字稿还不支持async / await与es5 ..所以我无法使用target:“es5”..

但是安装typescript @ rc作为npm包工作了!新的2.1版本在es5模式下支持async / await。

这个包可能会在未来几个月内发布。