我有2个打字稿项目,其中包含很少的类。我在package.json
中的Project2中添加了Project1的依赖项{
"name": "Project2",
"dependencies": {
"@Project1": "file:../Project1/dist"
}
}
该项目均使用
构建“target”:“es5”,“module”:“es2015”,
我正在使用Karma-Webpack为项目设置测试环境。为了转换代码,我使用babel-loader(使用预设:es2015)而不是ts-loader。它转换了Project2中的代码,但是来自node_modules的Project1中的代码没有被转换。由于它在测试运行时抛出错误
Chrome 55.0.2883(Windows 10 0.0.0)错误未捕获的SyntaxError: spec.bundle.js上的意外令牌导出:80972
我想知道是否可以使用webpack从node_modules转换本地模块?
注意:如果我将模块类型更改为“commonjs”,它可以正常工作,但这不是我要找的解决方案。
任何建议???
答案 0 :(得分:2)
好吧,我遇到了这个错误,因为我使用es2015来编译父模块。如果你使用commonjs,你就不会遇到这个问题。
您可以通过在karma.config.file中的webpack配置中添加以下内容来转换节点模块代码。
webpack: {
resolve: {
extensions: ['', '.ts', '.js']
},
module: {
loaders: [
{
// This will transpile Typescript files
test: /\.ts(x?)$/,
exclude: /node_modules/,
loader: "babel-loader" + "?presets[]=es2015" + "!ts-loader",
},
{
// This will transpile ES2015 javascript files
test: /\.js(x?)$/,
include: [
path.resolve(__dirname, "node_modules/<<YOUR MODULE NAME>>")
],
loader: "babel-loader" + "?presets[]=es2015"
}
]
}
},
现在,Webpack将使用babel-loader来传输JS / TS代码。