如何在 '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 配置文件有这个选项,但它默认被注释
在 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 配置文件有这个选项,但它默认被注释