使用Node.js REPL,您如何import使用ecmascript语法的模块? Node.js REPL的任何版本现在都允许吗?
在Node.js v10.16.0中,我正在使用以下命令访问REPL:
node --experimental-modules
来源:https://nodejs.org/api/esm.html#esm_enabling
CommonJS是古老的技术。 Node.js是否仍在积极开发中?我想知道deno REPL是否可以做到这一点?
答案 0 :(得分:3)
目前,您不能使用静态的import
语句(例如import someModule from "some-module"
),而且我不知道要为此做出任何努力/出票/公关/意图。
您可以使用import()
语法加载模块!这将返回一个承诺。因此,例如,您可以创建变量someModule
,开始导入,并在完成导入后,将someModule
设置为该模块:
let someModule
import("some-module")
.then( loaded=> someModule= loaded)
或者您可以在您的Promise处理程序中直接使用导入:
import("some-module").then(someModule => someModule.default())
对于更复杂的示例,您可能希望使用异步立即调用函数表达式,因此可以使用await
语法:
(async function(){
// since we are in an async function we can use 'await' here:
let someModule = await import("some-module")
console.log(someModule.default())
})()
最后,如果您使用--experimental-repl-await
标志启动Node.JS,则可以直接从repl使用async并删除立即调用的异步函数:
let someModule = await import("some-module")
// because you have already 'await'ed
// you may immediately use someModule,
// whereas previously was not "loaded"
console.log(someModule.default())
答案 1 :(得分:0)