我有3个回购 - client
,backend
和interfaces
。
所有都是用TypeScript编写的。客户端和后端repos在构建阶段编译成JavaScript,然后部署到服务器。
最后一个repo interfaces
不应该编译成任何东西,而只是用作客户端和后端repos的npm依赖关系,声明客户端和后端应用程序如何相互通信。
在我介绍interfaces
repo并将其作为依赖关系添加到其他repos之前,我使用了硬编码的消息类型字符串,所有编译都很好。
现在,使用interfaces
纯粹的TypeScript依赖项,我可以将其中的类型注入client
或backend
repos代码,并看到它们正确连接。
但问题是我现在无法编译项目,因为在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中的错误模块解析失败:关键字'interface'被保留(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。
如果它在我想的项目的另一个文件夹中,这个接口代码将正常工作。
如何摆脱此错误并将其导入我的代码然后编译?
答案 0 :(得分:0)
如果从ts-loader中排除/ node_modules /并不是指望此文件夹中的.ts文件未正确导入?