如何将 ES6 导入与“请求”npm 模块一起使用

Posted

技术标签:

【中文标题】如何将 ES6 导入与“请求”npm 模块一起使用【英文标题】:How to use ES6 import with 'request' npm module 【发布时间】:2018-05-30 19:11:21 【问题描述】:

在 ES6-ifying 一些 TypeScript 代码(我正在工作的项目在浏览器和节点服务器中运行,我想对浏览器包进行树摇动),我试图消除对 @987654322 的使用@ 并且只使用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 编译器接受此代码并直接通过?

【问题讨论】:

***.com/questions/35706164 【参考方案1】:

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

【讨论】:

【参考方案2】:

您可以尝试将allowSyntheticDefaultImports:true 添加到您的

tsconfig.json

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

【讨论】:

以上是关于如何将 ES6 导入与“请求”npm 模块一起使用的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能使用ES6从npm包导入jQuery?

如何将 ES6、AMD 和 CJS 模块与 JSPM 和系统 js 一起使用?

如何将 Babel 与 Electron 一起使用?

如何将用 ES6 编写的模块发布到 NPM?

访问JSX文件中的非es6 npm模块函数

如何在 Meteor 中使用`moment.js`?