Webpack 找不到 Typescript 类型解析所需的导入。如何解决这个问题?
Webpack can't find import needed for Typescript type resolution. How to fix this?
我的项目使用 typescript 并使用 webpack 构建。
我有一个来自位于 node_modules/@types/libname/custom.d.ts
下的第三方库的类型文件。该文件有一个名称空间声明,其中包含一些类型:
declare namespace MyNamespace {
export type A = ...;
}
然后为了能够在我的打字稿代码中使用该类型,如下所示:
const x: MyNamespace.A;
...我需要在应用中的某处添加如下导入声明:
import 'libname'
哪个 tsc 正确解析为 node_modules/@types/libname/custom.d.ts
所以如果我用 tsc 编译一切正常。
但是 webpack 无法构建。它无法理解此导入:
ERROR in ./Index.tsx
Module not found: Error: Can't resolve 'libname' in 'C:\<path_to_index_file>'
@ ./Index.tsx 44:0-32
我试着在我的 webpack.config 中添加别名,如下所示:
resolve: {
alias: Object.assign({
'libname$': path.resolve(__dirname, 'node_modules/@types/libname/custom.d.ts'),
}
},
但随后它失败了,因为它无法理解该文件的语法并询问我是否缺少加载程序。
我该如何解决这个问题,以便 webpack 理解这个 typings import 语句?
我使用的是 webpack 版本 4.41.6
谢谢!
您应该使用 null-loader 进行此导入,以便 webpack 将忽略它。
我的项目使用 typescript 并使用 webpack 构建。
我有一个来自位于 node_modules/@types/libname/custom.d.ts
下的第三方库的类型文件。该文件有一个名称空间声明,其中包含一些类型:
declare namespace MyNamespace {
export type A = ...;
}
然后为了能够在我的打字稿代码中使用该类型,如下所示:
const x: MyNamespace.A;
...我需要在应用中的某处添加如下导入声明:
import 'libname'
哪个 tsc 正确解析为 node_modules/@types/libname/custom.d.ts
所以如果我用 tsc 编译一切正常。
但是 webpack 无法构建。它无法理解此导入:
ERROR in ./Index.tsx
Module not found: Error: Can't resolve 'libname' in 'C:\<path_to_index_file>'
@ ./Index.tsx 44:0-32
我试着在我的 webpack.config 中添加别名,如下所示:
resolve: {
alias: Object.assign({
'libname$': path.resolve(__dirname, 'node_modules/@types/libname/custom.d.ts'),
}
},
但随后它失败了,因为它无法理解该文件的语法并询问我是否缺少加载程序。
我该如何解决这个问题,以便 webpack 理解这个 typings import 语句?
我使用的是 webpack 版本 4.41.6
谢谢!
您应该使用 null-loader 进行此导入,以便 webpack 将忽略它。