ES6 模块如何作为 Node 中的脚本运行?
当我尝试这个 shebang 时,我收到一个错误:
#!/usr/bin/env node --experimental-modules
/usr/bin/env: ‘node --experimental-modules’: 没有这样的文件或目录
如果我使用这个 shebang 它会有语法错误(当然):
#!/usr/bin/env node
语法错误:意外的令牌导入
我正在使用的解决方法是使用 shell 脚本来调用模块:
#!/usr/bin/env sh
BASEDIR=$( dirname "$0" )
node --experimental-modules $BASEDIR/script.mjs "$@"
是否可以在没有第二个文件的情况下使其工作?
我已经打补丁了伊尚·蒂利纳·索马西里 https://stackoverflow.com/a/48179910/791414配合使用的解决方案Node 13
没有.mjs
扩大:
#!/usr/bin/env bash
":" //# comment; exec /usr/bin/env node --input-type=module - "$@" < "$0"
import { hostname } from 'os';
console.log(hostname());
技巧几乎相同,但是使用 stdin,这是唯一的有记录的 https://nodejs.org/dist/latest-v13.x/docs/api/esm.html#esm_enabling当你没有的时候package.json
也不.mjs
扩大。因此,这是一个独立的无扩展脚本。
However,全局变量如__dirname
or __filename
将不可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)