使用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中,所以它根本不是解决方案。
答案 0 :(得分:0)
经过深入挖掘后,我发现设置tsconfig到目标:“es5”解决了它。我遇到的问题是,打字稿还不支持async / await与es5 ..所以我无法使用target:“es5”..
但是安装typescript @ rc作为npm包工作了!新的2.1版本在es5模式下支持async / await。
这个包可能会在未来几个月内发布。