首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载ecmascript模块(.mjs文件)作为nodejs的主要入口

加载ecmascript模块(.mjs文件)作为nodejs的主要入口
EN

Stack Overflow用户
提问于 2019-05-15 00:38:02
回答 2查看 1.7K关注 0票数 2

有没有一种方法可以使用ecmascript模块文件作为使用package.json bin条目导出的cli的主入口文件?

我想我需要以某种方式提供--实验性模块标志,但如果不将mjs文件包装为js文件,然后通过以下方式调用mjs文件,则无法找到这样做的方法。

代码语言:javascript
复制
#!/usr/bin/env node
// pseudocode
child_process.spawn(
  'node', 
  ['--experimental-modules', 'bin.mjs'], 
  { stdio: 'inherit' }
)

考虑到调用child_process.spawn的开销,我希望能够替换库中的包装器。

编辑:请不要让我的cli必须使用npm i -g作为可执行文件进行安装,这样就不可能将任何命令行标志传递给节点进程(请参阅我无法使用的回答 )。

edit2:我想我应该在这里留下一个指向相关库的链接-- @魔术/cli,这是我当前的方法(我包括一个bin.js文件,该文件child_process.spawns是一个mjs文件)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-07 22:10:29

节点13默认启用--experimental-modules,因此#!/usr/bin/env node就足够了。不过,仍会发出警告。

(node:23260) ExperimentalWarning: The ESM module loader is experimental.

票数 1
EN

Stack Overflow用户

发布于 2019-05-15 04:27:41

您可以安装esm模块,然后在运行代码时要求它,即可以使用-r esm代替--experimental-modules。然后以node -r esm bin.mjs的形式运行您的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56140345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档