ES6 模块如何在 Node 中作为脚本运行?
当我尝试这个 shebang 时出现错误:
#!/usr/bin/env node --experimental-modules
/usr/bin/env: ‘node --experimental-modules’: No such file or directory
如果我使用这个 shebang 它有语法错误(当然):
#!/usr/bin/env node
SyntaxError: Unexpected token import
我正在使用的解决方法是使用 shell 脚本来调用模块:
#!/usr/bin/env sh
BASEDIR=$( dirname "$0" )
node --experimental-modules $BASEDIR/script.mjs "$@"
是否可以在没有第二个文件的情况下使它工作?
最佳答案
我已经修补了 Ishan Thilina Somasiri在没有 .mjs
扩展名的情况下使用 Node 13
的解决方案:
#!/usr/bin/env bash
":" //# comment; exec /usr/bin/env node --input-type=module - "$@" < "$0"
import { hostname } from 'os';
console.log(hostname());
技巧几乎相同,但使用标准输入,这是唯一的 documented当您没有 package.json
或 .mjs
扩展名时的方式。因此,一个独立的无扩展脚本。
但是,__dirname
或__filename
等全局变量将不可用。
关于node.js - ES6 模块如何在 Node 中作为脚本运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179714/