【发布时间】:2018-05-21 07:09:15
【问题描述】:
我有 3 个存储库 - client、backend 和 interfaces。
所有内容都是用 TypeScript 编写的。客户端和后端存储库在构建阶段编译成 JavaScript,然后部署到服务器。
最后一个 repo interfaces 不应该被编译成任何东西,而只是用作客户端和后端 repos 的 npm 依赖项,声明客户端和后端应用程序如何相互通信。
在我引入interfaces repo 并将其作为对其他两个 repos 的依赖项添加之前,我使用了硬编码的消息类型字符串并且所有编译都很好。
现在,有了一个纯粹的 TypeScript 依赖项,即 interfaces,我可以将类型从它注入到 client 或 backend 存储库代码中,并查看它们是否正确连接。
但问题是我现在无法编译项目,因为在 Webpack 中似乎没有为这种情况正确配置一些东西。
这里是webpack.config.js的相关文章:
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
// exclude: /node_modules/
},
{
test: /\.ts$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
使用这个我在尝试使用 webpack 构建时看到一个错误:
./node_modules/myapp_interfaces/interfaces/ClientRequestPayload.ts 中的错误
模块解析失败:关键字“接口”被保留 (1:0)
您可能需要适当的加载程序来处理此文件类型。
如果我注释掉 exclude: /node_modules/,我会看到:
./node_modules/myapp_interfaces/index.ts 中的错误
模块构建失败:错误:Typescript 没有为 /myapp/myapp_backend/node_modules/myapp_interfaces/index.ts 发出输出。
您应该不需要在 node_modules 中重新编译 .ts 文件。
请联系包作者,建议他们使用 --declaration --outDir。
如果这个接口代码在我想的项目的另一个文件夹中,它会正常工作。
如何摆脱这个错误,只需将它们导入到我的代码中然后编译?
【问题讨论】:
-
你有没有解决过这个问题,我遇到了同样的错误。
-
您是否设法解决了这个问题。我有同样的问题,但我的应用程序没有弹出所以没有 webpack.config.js
标签: javascript typescript webpack