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

2023-12-24

ES5 代码可以在终端中使用 Bash heredoc 轻松运行:

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)

它确实显示了此信息“实验警告:ESM 模块加载器是实验性的。”这意味着 Node.js 可以通过 ES6 模块功能正确运行,但是,the import关键字不起作用.

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


Update:
从 Node.js 14 开始,该标志--experimental-modules不再需要,它已经默认存在于 Node.js 中.mjs文件,也适用于heredoc,但是--input-typeCLI 上仍然需要,因为仍应该为此处文档指定 ES5 或 ES6:

node --input-type module <<HEREDOC
  //example:
  import fs from "fs";
HEREDOC

较旧的指南:
经过研究,Node 11 根本不支持来自 stdin 的 ES 模块,如果你想在 Node 11 中使用模块,你需要将它们放在一个文件中。

使用 Node 12(当前未发布,但您可以使用npm i -g node-nightly),您可以使用该标志--entry-type=module使用 stdin 作为模块。

With node-nightly以下工作得很好:

node-nightly --experimental-modules --entry-type=module <<HEREDOC
  import fs from 'fs'
  console.log(fs);
HEREDOC

Edit:

正如 @Jamesernator 在评论中指出的,对于 v13 中的 node-nightly,请使用“--input-type”而不是“--entry-type”。

并且仅支持内置模块,即。 “import”将无法在本地目录中找到模块,也无法找到使用“-g”标志安装的全局模块。相关问题:https://github.com/nodejs/node/issues/19570 https://github.com/nodejs/node/issues/19570

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Bash Heredoc 在 Bash 终端中运行 ES6 代码 的相关文章

  • 使用 JS 和 HTML 将当前 URL 插入链接

    所以 我已经阅读了类似的内容 但我仍然找不到更适合我正在做的事情的答案 我正在尝试使用 JS 获取当前页面 URL 并将其附加到社交媒体共享链接 如下所示 a href target blank 使用 Javascript 我成功地将当前
  • 当列表包含图像时,React Native FlatList 感觉很慢

    我为 avater 使用 64x64 图像 它的尺寸非常小 通过我的应用程序 滚动时帧率下降至 25 35 fps 如何优化 flatList 图像
  • 从mongoDB和Nodejs获取数据:toArray不是函数错误[重复]

    这个问题在这里已经有答案了 我有以下代码 var user User find limit 1 skip 10 toArray 但我收到错误消息toArray不是一个函数 但如果我执行以下操作 我将获得所有记录 User find func
  • JavaScript 函数参数和范围

    我用下面列出的代码做了一些测试 function foo x alert y var y I am defined outside foo definition foo 上面的代码给了我一个警告 我是在 foo 定义之外定义的 然后另一个测
  • 自定义过滤器在 Angular Hybrid 应用程序中不起作用

    我正在尝试将 AngularJS 1 6 应用程序与 Angular 5 一起转换为混合应用程序 我定义了以下简单过滤器 function use strict var filterId colorPicker angular module
  • Internet Explorer 的数组indexOf 实现

    有很多关于如何将 indexOf 实现放入数组原型中以便它可以在 Internet Explorer 下工作的解决方案 但是我偶然发现了一个问题 到目前为止我所看到的任何地方似乎都没有解决这个问题 使用非常一致的MDC 的实施 https
  • 当容器有选择框时 jQuery mouseleave 触发问题

    我有两个容器 一个嵌套在另一个容器内 当我将鼠标悬停在父容器上时 我希望显示子容器 当我鼠标移出时 我希望子容器淡出 我遇到的问题是子容器有一个包含 选择框 的表单 当用户选择选择框时 会意外触发 mouseleave 事件 如何阻止选择框
  • 如何通过双击使该 file.sh 可执行?

    首先我用的是Mac 接下来 我需要执行这个 file sh 我们将调用它 每次我需要执行它时 我都必须打开终端并输入 cd Users Jacob Documents folderWithFileInIt bash file sh 这没关系
  • node.js、vue.js 和express.js 堆栈开发

    我正在尝试使用 Linux 上的 Visual Studio Code IDE 使用 vue js express js 和 node js 创建一个 Web 应用程序 根据网上的一些文档 我读到安装 vue js 后 可以创建一个vue
  • 调整发散堆积条形图以使用通用更新模式

    我一直在使用可用的堆积条形图示例here https bl ocks org mbostock b5935342c6d21928111928401e2c8608使用以下代码 var data month Q1 2016 apples 384
  • JavaScript 中的自定义“确认”对话框?

    我一直在开发一个使用自定义 模式对话框 的 ASP net 项目 我在这里使用吓人引号 因为我知道 模式对话框 只是我的 html 文档中的一个 div 它被设置为出现在文档其余部分的 顶部 而不是真正意义上的模式对话框 在网站的许多部分
  • 如何为 chrome 和 ie favicon(加载指示器)设置动画

    我的 PM 有一个要求 将图标更改为动画加载图像 仅当我将 link href 指向 gif 文件时 它才适用于 Firefox 我做了一些研究 发现 chrome 不支持动画图标 但wiki https en wikipedia org
  • Web 扩展中共享 vuex 状态(死对象问题)

    我正在尝试在网络扩展中使用共享的 vue js 状态 状态存储在后台脚本的 DOM 中并呈现在弹出页面中 第一次尝试 我的第一次尝试是使用一个没有 vuex 的简单商店 背景 js var store count 0 popup js br
  • 如何检查 URL 末尾是否有特定字符串

    我需要根据 URL 末尾的内容让覆盖层向下滑动 如果 URL 末尾有 faq 覆盖层下降 如何在 jQuery JavaScript 中做到这一点 如果您的网址看起来像这样http yourdomain com faq 你可以这样做 var
  • 将回调函数与原型函数一起使用

    在执行回调时 我无法弄清楚如何传递对象方法而不是排序 通用原型 方法 function Client this name hello Client prototype apiCall function method params callb
  • 如何在 C# 中通过 JavaScript 回调运行 QUnit 测试并获取测试结果?

    在我的几个项目中 我使用 MVC 模式将代码 关注点 分为 3 层 模型层和控制层都在 C 上运行 因此我使用 MSTest 或 NUnit 等测试框架来验证这些层的功能需求 对于视图层 我使用 QUnit 来测试 JavaScript 文
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • Rails 6 webpack 抛出“未捕获的引用错误:$未定义”

    大家好 我最近开始使用 ruby 2 6 5 开发 Rails 6 由于 Rails 6 引入了 webpack 所以我尝试使用 webpack 加载我的 js 文件 尽管我已经在 appliation js 中需要了 jquery 但我仍
  • JavaScript 不是 DOM 的一部分吗?

    为什么即使从 DOM 中删除用于创建脚本的代码 脚本仍然可以运行 我遇到了一种情况 我想阻止损坏的脚本运行 查看我的帖子 https stackoverflow com questions 2685581 is there a way to
  • JavaScript 反静默技术来指示失败

    当错误确实发生并且函数无法继续执行时 在 JavaScript 中报告错误而不是依赖 null 和 undefined 是一个好方法 我可以想到三种方法 没做什么 抛出异常 assert 这是一个简单的示例场景 一个将传入的金额记入用户帐户

随机推荐

  • tr 命令无法直接输出?

    我有一个文件 file txt 女巫有这些条目 NY LA SF 我运行命令 tr n 我需要将所有这些输出放在同一个 file txt 文件中 因此我像这样重定向了输出 tr n 文件 txt 但它没有在 file txt 中放入任何内容
  • lodash:如何压缩具有值的对象数组

    我正在研究如何使用 lodash 压缩具有值的对象数组 包括每个值的新键 尝试过zip https lodash com docs zip zip对象 https lodash com docs zipObject and map http
  • 为什么“string”被认为是“String”的简化版本?

    在C 中我通常使用String当我使用一种方法时string声明变量时 我在其他地方读到这是保持事物清洁的首选方法 这对我来说很有意义 在 Visual Studio 2015 中 当我使用时 我收到了一条以前没有收到过的新消息String
  • 使用 Retrofit 上传图像时出现 FileNotFoundException

    我尝试使用 Retrofit 上传图像 但收到此错误 Unable to submit post to API java io FileNotFoundException document image 30231 open failed E
  • 在plug-in.xml中如何将文件扩展名与eclipse插件中的特定类型编辑器关联

    我正在开发一个 Eclipse 插件 其中当扩展名为 cert 的文件与某种类型的编辑器关联时 该编辑器的实现在 RateBuilderEditor java 中 我想 我必须在plugin xml中提到这一点 我该如何实现这一目标 这个E
  • ASN.1 编译器错误标记“SYNTAX”意外

    我目前正在尝试编译 ASN 1 代码片段 它看起来如下 RFC1213 MIB DEFINITIONS BEGIN IMPORTS experimental FROM RFC1155 SMI OBJECT TYPE FROM RFC 121
  • PostGIS 2.0.0安装GEOS问题

    尝试在 Ubuntu 11 10 上安装 PostGIS 2 0 0 我基本上遵循了此处找到的 OSGeo 说明 http trac osgeo org postgis wiki UsersWikiPostGIS20Ubuntu1110sr
  • 在 Networkx 图中绘制沿着其边缘的标签

    在使用 Networkx 时 我有几条边需要以不同的方式显示 为此 我使用连接样式 有些边是直线 有些是 Arc3 问题是每条边都有一个标签 并且标签不遵循这些样式中的边 我借用了一张图作为例子 usr bin env python3 im
  • F# WPF:处理列表框中的单击事件

    我正在尝试使用 F 和 WPF 创建一个简单的任务调度程序 它基本上只是一个任务列表 其中每个任务都有一个 删除 按钮 处理列表之外的按钮点击不是问题 这可以使用常规命令来处理 但是处理按钮点击in该列表项并不简单 我尝试使用描述的 Rel
  • 如何集成 Firefox 同步?

    Firefox 4 即将推出 好吧 明年 并且有一个 Firefox 插件可以将您的书签等与 Firefox 3 同步 我想知道是否有人有一个全面的 最新的教程来将 Firefox Sync 集成到您自己的插件中 或者对此有什么想法吗 我主
  • play框架中不同浏览器的文件上传

    我正在使用 play 框架来构建一个网站 我还使用了一个名为xheditor http code google com p xheditor Xheditor支持ajax文件上传 它需要服务器端有一个接受包含上传文件的 filedata 参
  • 我可以在 Windows 10 中安装 IE7 和 IE8 吗?

    我正在使用 Windows 10 和 IE 11 我想安装 IE7 和 IE8 来测试 javascript 我点击以下链接下载 IE7 IE8 https www microsoft com en us download internet
  • R:基于“OR”语句的连接

    我正在使用 R 编程语言 假设我有以下两个表 table 1 data frame id c 123 123 125 125 id2 c 11 12 14 13 date 1 c 2010 01 31 2010 01 31 2015 01
  • CALayer - 将子层放置在情节提要 UIButtons 下方?

    我的故事板中有一个带有几个 UIButton 的视图控制器 其中之一激活子层中显示的 AVFoundation 相机预览层 captureVideoPreviewLayer AVCaptureVideoPreviewLayer alloc
  • 从java调用java中的关键字kotlin函数?

    Since new不是 kotlin 中的关键字 我可以在 kotlin 中具有以下功能 fun new String return just returns some string 但我无法从 java 调用这个函数new是java中的一
  • 从命令行恢复到以前的配置?

    我运行 eclipse 时遇到问题 安装 3 个插件 来自 TeXlipse 后 我有一个错误 ENTRY org eclipse osgi 4 0 2012 01 21 13 57 28 430 MESSAGE Application e
  • Android获取两个日期之间的差异

    我的字符串发布日期如下 2011 03 27T09 39 01 607 并且有当前日期 我想以以下形式获得这两个日期之间的差异 2 days ago 1 minute ago etc 取决于发布日期 我使用此代码将发布日期转换为毫秒 pub
  • 如果我缓存 Spark Dataframe,然后覆盖引用,原始数据帧是否仍会被缓存?

    假设我有一个函数来生成 py spark 数据帧 并将数据帧作为最后一个操作缓存到内存中 def gen func inputs df do stuff df cache df count return df 根据我的理解 Spark的缓存
  • 调整立方体的大小

    我有一组使用 CSS 创建的立方体代码 但是 如何将其调整为更大的立方体 例如 200px 我已经尝试过了 但每次我尝试这样做时 它都会失位 mainDiv position relative width 206px height 190p
  • 使用 Bash Heredoc 在 Bash 终端中运行 ES6 代码

    ES5 代码可以在终端中使用 Bash heredoc 轻松运行 node lt