如何在 'request' npm 模块中使用 ES6 导入

How to use ES6 import with 'request' npm module

在 ES6 化一些 TypeScript 代码中(我正在工作的项目在浏览器和节点服务器上运行,我想对浏览器包进行 tree-shaking),我试图消除使用require 且仅使用 import。但是当我这样做时...

import * as request from 'request';

然后调用 request(),我在 Node 中遇到运行时错误(在使用 babel 使代码与 ES5 兼容后,Node 兼容):

TypeError: request is not a function

另一方面,如果我这样做:

import request from 'request';

然后 TypeScript 编译器抱怨

error TS1192: Module '"<mypath>/node_modules/@types/request/index"' has no default export.

如果我手动更改编译后的JS代码使用import request from 'request';,它实际上工作正常......我如何强制TS编译器接受这段代码并通过它?

你可以尝试添加 allowSyntheticDefaultImports: true 到你的

tsconfig.json

在 Typescript 中似乎仍然是一个悬而未决的问题。

基本上你需要删除第 46 行 tsconfig.json 中的注释,因为默认的 ts 配置文件有这个选项,但它默认被注释