node.js - 如何使用带有 'request' npm 模块的 ES6 导入

标签 node.js typescript es6-modules npm-request

在 ES6 化一些 TypeScript 代码中(我正在工作的项目在浏览器和 Node 服务器上运行,我想对浏览器包进行 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 中似乎仍然是一个悬而未决的问题。

关于node.js - 如何使用带有 'request' npm 模块的 ES6 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47851583/

相关文章:

node.js - 如何在 PM2 中运行 2 个独立的应用程序?

javascript - 获取简短的 JavaScript CustomEvent polyfill 以在 TypeScript 中进行编译?

javascript - 括号中的点用于访问嵌套属性

javascript - 同时导入命名空间和子模块是否有缺点?例如。 `import React, { Component } from ...`

javascript - react : Trying to pass an array to a functional component, 但它不会呈现

node.js - 如何在nodejs中使用ffmpeg并将结果通过管道传输到带有spawn的流?

node.js - Node :如何根据环境要求不同的类

javascript - 需要完整的 JavaScript 堆栈路由解释

angular - ionic 水平滚动条

javascript - 如何使用 es6 导入加载 emscripten 生成的模块?