将Angular 2与Typescript一起使用。捆绑Webpack并使用babili插件。我收到错误:Uncaught SyntaxError: unexpected token ?
我已将其追溯到这个已编译的片段:
z=/^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\w\d\-\u0100-\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/
令人反感的是?://
我在@ angular / compiler
中进一步跟踪了url_resolver.jsvar /** @type {?} */ _splitRe = new RegExp('^' +
'(?:' +
'([^:/?#.]+)' +
// used by other URL parts such as :,
// ?, /, #, and .
':)?' +
'(?://' +
'(?:([^/?#]*)@)?' +
'([\\w\\d\\-\\u0100-\\uffff.%]*)' +
// digits, dashes, dots, percent
// escapes, and unicode characters.
'(?::([0-9]+))?' +
')?' +
'([^?#]+)?' +
'(?:\\?([^#]*))?' +
'(?:#(.*))?' +
'$');
```
行:'(?://' +
如果我编辑已转换的代码以删除//
一切似乎都有效。如果我将其更改为\/\/
,一切似乎都有效。
显然,我不能在每个版本上继续编辑此文件。问题是我不知道实际问题在哪里。是用巴贝尔还是角度代码?我讨厌弄乱他们的问题(角度问题在他们的提交指南中相当严格)所以我想我会问这个优秀的社区。 p>
如果需要,还需要一些其他信息:
tsconfig:
{
"compilerOptions": {
"target": "es5",
"module": "es5",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"types": []
},
"exclude": [
"typings",
"node_modules",
"server"
],
"files": []
}
.babelrc
{
"presets": ["es2015"]
}
webpack.config.js的相关(希望)部分
atlOptions = 'transpileOnly=true&configFileName=tsconfig.prod.json'
config.module.rules.push({
test: /\.ts$/,
loaders: ['awesome-typescript-loader?' + atlOptions, 'angular2-template-loader', '@angularclass/hmr-loader'],
exclude: [/\.(spec|e2e)\.ts$/, /node_modules\/(?!(ng2-.+))/]
})
config.plugins.push(new BabiliPlugin({comments: false, mangle: false}))
现在我没有开发工作流程的babel东西,所以这不会导致问题 - 只是为了生产构建。