猿问

使用Bash heredoc在Bash终端中运行ES6代码

使用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:ESM模块加载器是实验性的。” 该装置的Node.js与ES6模块功能正常运行,然而,该import关键字只是不工作。


如何使用Bash heredoc在终端中内联运行ES6代码?我知道我可以编写代码将文件正常加载为ES6模块,但这是一个简短的临时代码,如果它在Heredoc中更好。


倚天杖
浏览 166回答 2
2回答

子衿沉夜

这是一个很好的问题,它教给我很多东西!感谢您的询问。这是我学到的:首先,针对节点的Bash Heredoc就像简单地执行节点,然后键入在Heredoc标记中键入的内容一样IEnode --experimental-modules <<HEREDOC&nbsp; import fs from "fs";&nbsp; ...HEREDOC相当于node --experimental-modules> import fs from "fs";然后执行这样的节点,从节点打开REPL其次,import语法:import fs from "fs"有没有fs在"fs"。现在这对您来说不是问题,但是如果导入成功,则不会在"fs"模块中找到。相反,正确的语法将是,例如:import { readFile } from "fs";但是,这产生了:SyntaxError: Unexpected token {最后,问题是整个功能确实是实验性的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答