为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

倚天杖 2021-04-01 12:15:06
使用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]:1import 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中更好。
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

这是一个很好的问题,它教给我很多东西!感谢您的询问。这是我学到的:


首先,

针对节点的Bash Heredoc就像简单地执行节点,然后键入在Heredoc标记中键入的内容一样


IE


node --experimental-modules <<HEREDOC

  import fs from "fs";

  ...

HEREDOC

相当于


node --experimental-modules

> import fs from "fs";

然后执行这样的节点,从节点打开REPL


其次,import语法:


import fs from "fs"

有没有fs在"fs"。现在这对您来说不是问题,但是如果导入成功,则不会在"fs"模块中找到。相反,正确的语法将是,例如:


import { readFile } from "fs";

但是,这产生了:


SyntaxError: Unexpected token {

最后,问题是整个功能确实是实验性的。


查看完整回答
反对 回复 2021-04-22
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信