我有 2 个包含几个类的 typescript 项目。我在 package.json 中的 Project2 中添加了 Project1 的依赖项

{
  "name": "Project2",
  "dependencies": {
    "@Project1": "file:../Project1/dist"
  }
}
两个项目都是使用构建的

我正在使用 Karma-Webpack 为项目设置测试环境。为了转译代码,我使用了 babel-loader(预设:es2015)而不是 ts-loader。它转译了来自 Project2 的代码,但来自位于 node_modules 中的 Project1 的代码没有被转译。由于它在运行测试时抛出以下错误

我想知道是否可以使用 webpack 从 node_modules 转译本地模块?
注意: 如果我将模块类型更改为“commonjs”,它可以工作,但这不是我正在寻找的解决方案。
有什么建议么???

最佳答案

好吧,因为我使用 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 代码。

关于typescript - 是否可以从 node_module 转译本地模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41838046/

10-13 07:37