node_modules/@types 中的 Webpack ts-loader 错误

Webpack ts-loader error in node_modules/@types

我的项目编译正常,但如果我在新目录中签出并尝试 npm install 然后 webpack,我会收到以下错误:

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(500,12): error TS1005: ',' expected.

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(502,12): error TS1005: ',' expected.

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(504,15): error TS1005: ',' expected.

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(505,15): error TS1005: ',' expected.

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(506,15): error TS1005: ',' expected.

ERROR in /home/nobody/myproject/server/node_modules/@types/mongodb/index.d.ts
(1002,23): error TS1005: ',' expected.

以及同一文件中的大约 25 个其他错误,以及我的一些源文件中的其他错误。

在我的 tsconfig.json 中,我排除了 node_modules,并且我还设置了 webpack externals 用于打包 node_modules 和节点快递后端:

var nodeModules = {};
fs.readdirSync('node_modules')
    .filter(function (x) {
        return ['.bin'].indexOf(x) === -1;
    })
    .forEach(function (mod) {
        nodeModules[mod] = 'commonjs ' + mod;
    });

我不太明白为什么在我的开发目录中一切正常,但如果我把它放在另一个目录中,它就会崩溃。

您使用的是哪个版本的 TypeScript? The current version of Mongo's .d.ts 个文件开始使用在 TypeScript 2.3 中发布的默认类型参数。文件中还有 20 多个默认类型参数,这听起来像是您看到的解析错误的数量。

简而言之,您可能只需要升级到 TypeScript 2.3。