当前位置: 首页 > 面试题库 >

如何在Node.js REPL中导入ES模块?

霍建柏
2023-03-14
问题内容

我有一个ES6模块right.mjs。将其作为参数执行即可node

$ node --version
v8.10.0
$ node --experimental-modules right.mjs
(node:4492) ExperimentalWarning: The ESM module loader is experimental.
executing right module

executing right module 是模块的输出。

与此相反,REPL中的以下输入等待进一步的输入:

$ node --experimental-modules
> (node:4526) ExperimentalWarning: The ESM module loader is experimental.

> import 'right.mjs';
...

我不明白为什么。

与以下相同:

> import './right.mjs';
...

尝试require导致:

> require('./right.mjs');
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/xxx/right.mjs
    at Object.Module._extensions..mjs (module.js:686:11)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

那么,如何在Node.js REPL中导入ES模块?


问题答案:

目前这是不可能的。ES模块应该从ES模块范围导入,而REPL不被认为是其中之一。随着时间的推移,这会有所改善,因为ES模块的支持是实验性的。在Node模块实现中require和的使用import是互斥的,REPL已使用require

importREPL中期望对动态的支持,但尚不支持,最新的Node
11版本会导致错误:

TypeError [ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING]:未指定动态导入回调。



 类似资料:
  • 问题内容: 在PyCharm中,我添加了Python环境。然而, 失败作为未定义的引用。但是,它在命令行的Python解释器中运行良好。 GNURadio可以在Pycharm外部使用python正常工作。一切都已安装并配置为我想要的方式。 格努拉迪奥位于 也: PYTHONPATH = / usr / local / lib / python2.7 / site-packages:/usr/loc

  • 我在让sikuli python单元测试工作时遇到了麻烦,希望能得到一些帮助。我在网上到处搜索,但是没有任何有用的东西。我的python知识非常有限,我想这没有什么帮助... 我用的是win7 32,sikuli 1.0 rc3 (r905),python 2.7.3 我正在尝试通过python运行sikuli单元测试(不使用命令行,只是作为一个python脚本来运行python gui)。除了别

  • 问题内容: 我已经基于默认模板创建了一个简单的GAE应用。我想添加一个外部模块,例如short_url。我该怎么做呢?到目前为止,我发现的指示令人迷惑,我认为GAE似乎没有使用PYTHONPATH的明显原因。 问题答案: 只需将文件放在应用程序的目录中即可。 示例App Engine项目: 在(或任何地方),您可以像这样导入: 对于更复杂的项目,也许更好的方法是创建一个目录,尤其是针对依赖项。说:

  • 过去,每当我想在Node.js应用程序中拥有相对路径时,我都会使用。如果我通过格式使用ES模块,在某个目录路径变为相对路径时,我如何具有相同的功能? 另一种方法是,我是否能够将别名分配给目录,使所有相对路径都与该别名相关,就像是相对于当前目录的路径的别名一样。

  • 注意:我知道有很多关于这个主题的帖子,我已经审阅了相当多的没有成功(请看我在这篇文章底部的参考资料)。 我正试图使用Visual Studio代码在TypeScript中运行一个非常简单的测试,其中我在一个文件中声明一个类并将其导入到另一个文件中。但是,我仍然遇到一个问题,我正在导入的文件无法识别我从另一个文件导出的类的方法。 此时我收到的确切错误消息是: [ts]属性“Get FirstName

  • 问题内容: 我已经通读了Apple的Swift文档,却对如何创建模块或如何将类或结构成员定义为私有或公共一无所知。 语法中有对import语句的引用,但找不到有关它做什么或如何使用的信息。 有谁知道我在哪里可以找到这个? 问题答案: 更新资料 您可以使用框架对快速项目进行模块化。 我们通过为每个模块创建单独的框架项目并通过Xcode工作区将它们链接来实现模块化。当我们将组件分为不同的项目时,它看起