node.js - 如何在 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 已设置。
解决方案
这可能不是完美的答案,但我通过将代码库切换到 Type Script (TS) 解决了我的问题:
- 对于浏览器,我可以配置 ts 使用 es 6 模块
- 对于节点,我可以配置 ts 使用节点模块
--> 大家都很开心
推荐阅读
- ldap - 使用 NTLMv2 invalidCredential 的 LDAP 身份验证
- javascript - 如果其他条件在javascript中,脚本和链接标签?
- r - 在R中应用,相同的函数不同的参数
- c# - 如何创建一个接受内部 XAML 控件的 UserControl?
- reactjs - 使用 useReducer 会导致 Invariant Violation:Hooks 只能在函数组件的主体内部调用
- c# - C# 数组评分系统
- xml - 在单个 Web 套接字通道中发送 XML 和协议缓冲区
- groovy - 如何将 Groovy 类加载到 Activiti 的 Groovy 脚本引擎中?
- python - Django:在 SQLite 中更新后刷新网页上的数据
- javascript - Firebase:如何判断字段是否唯一?