使用Bash heredoc可以轻松在终端中运行ES5代码:
node <<HEREDOC
var fs = require("fs");
...
HEREDOC
但是,即使使用正确的 --experimental-modules 标志,ES6代码也无法运行:
node --experimental-modules <<HEREDOC
import fs from "fs";
...
HEREDOC
显示的错误是:
(node:4130) ExperimentalWarning: The ESM module loader is experimental.
[stdin]:1
import fs from "fs";
^^
SyntaxError: Unexpected identifier
at new Script (vm.js:83:7)
at createScript (vm.js:267:10)
at Proxy.runInThisContext (vm.js:319:10)
at Object.<anonymous> ([stdin]-wrapper:6:22)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at evalScript (internal/bootstrap/node.js:670:27)
at ReadStream.<anonymous> (internal/bootstrap/node.js:340:15)
at ReadStream.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1098:12)
at process.internalTickCallback (internal/process/next_tick.js:72:19)
它显示了这个信息“ExperimentalWarning: The ESM module loader is experimental.”,这意味着Node.js正确运行了ES6模块功能,但是关键字import
不起作用。
如何在终端中使用Bash heredoc内联运行ES6代码?我知道我可以将代码写入文件以正常加载ES6模块,但它只是短暂的临时代码,应该更好地放在heredoc中。