首页 > 解决方案 > 如何在 NodeJS 14.x 中使用命名导入(ES 6)?

问题描述

我有我喜欢在 nodejs (14.4) 和浏览器中使用的代码。为了让这段代码在 nodejs 中工作,我需要命名导入,比如

import {Vector3} from "three;

ES 6 模块通常可以通过以下更改正常工作:

包.json:

"type": "module",

一个启动nodejs,--experimental-specifier-resolution=node所以我不必指定文件扩展名。但是对于命名的导入,nodejs 仍然会打印出来:

SyntaxError: The requested module 'three' is expected to be of type CommonJS, which does not support named exports.

有一篇 Stackoverflow 帖子建议使用 esm 包加载器。不幸的是,它有一个错误使 TypeScript“反射元数据”无法使用(问题:https ://github.com/standard-things/esm/issues/809 )所以我不能使用它。

TL;博士; 如何在没有 ESM 包加载器的情况下在 nodeJs 14.4 中启用命名的 ES 6 模块?类型:模块和启动 arg 已设置。

标签: node.jses6-modules

解决方案


这可能不是完美的答案,但我通过将代码库切换到 Type Script (TS) 解决了我的问题:

  • 对于浏览器,我可以配置 ts 使用 es 6 模块
  • 对于节点,我可以配置 ts 使用节点模块

--> 大家都很开心


推荐阅读