【问题标题】:How to use a pure TypeScript library as a dependency with Webpack?如何使用纯 TypeScript 库作为 Webpack 的依赖项?
【发布时间】:2018-05-21 07:09:15
【问题描述】:

我有 3 个存储库 - clientbackendinterfaces

所有内容都是用 TypeScript 编写的。客户端和后端存储库在构建阶段编译成 JavaScript,然后部署到服务器。

最后一个 repo interfaces 不应该被编译成任何东西,而只是用作客户端和后端 repos 的 npm 依赖项,声明客户端和后端应用程序如何相互通信。

在我引入interfaces repo 并将其作为对其他两个 repos 的依赖项添加之前,我使用了硬编码的消息类型字符串并且所有编译都很好。

现在,有了一个纯粹的 TypeScript 依赖项,即 interfaces,我可以将类型从它注入到 clientbackend 存储库代码中,并查看它们是否正确连接。

但问题是我现在无法编译项目,因为在 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


【解决方案1】:

如果您从 ts-loader 中排除 /node_modules/ 是不是预计此文件夹中的 .ts 文件未正确导入?

【讨论】:

  • 我都试过了,请看上面的错误。
  • 你是否使用 webpack "--display-error-details" 选项运行 webpack?也许您可以获取更多信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 2019-02-25
  • 2019-01-30
  • 2020-09-28
  • 1970-01-01
  • 2019-05-08
  • 2016-03-03
相关资源
最近更新 更多