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 将忽略它。