[英]ES6 style imports in Node.js REPL
来自Python背景并且是Node.js的新手,我发现使用Node.js REPL交互式尝试代码非常困难。 我遇到的一个关键问题是imports
:
ES6样式导入不能在Node.js REPL上运行,我必须使用require
使用CommonJS样式导入。 示例:我无法在Node提示符下编写import rxjs
并且必须使用require('rxjs')
。 这使得将粘贴脚本复制到Node REPL中以便快速测试它们变得更加困难,我必须首先将所有ES6样式的导入转换为需要导入的,这种导入感觉违反直觉。
有没有简单的方法可以使用Node.js REPL中的ES6样式导入?
喜欢:
$ node
> import'rxjs';
>从'rxjs / operator / map'导入{map};
我甚至尝试过babel-node
,它似乎不支持模块导入。
我担心答案是否定的 ,或者至少还没有 。 我们知道它将来会得到支持,但ES2015的import
和export
不会作为CommonJS require
和module.exports
的就地替换。 这只是因为它们的工作方式不同。 您可以在此Node.js博客文章和此SO问题中找到更多信息。 特别是,人们已经可以在标志--experimental-modules
(相关的2ality博客文章 )下运行和导入Node.js中的标准模块。 但是,REPL仍然无法使用此功能。
你使用babel-node
(现在称为babel-cli
)的想法并不是那么糟糕: babel
实现了一个可互操作的require
函数,它是一种可以检索为这两种类型系统设计的模块的垫片。 不幸的是, 官方网站声称在REPL中缺少对此功能的支持:
ES6样式的模块加载可能无法按预期运行
由于技术限制,在babel节点REPL中不完全支持ES6样式的模块加载。
尽管如此,这个问题并不适用于生产代码,而生产代码无论如何都不应该依赖于REPL。 您可以考虑在包含babel-cli
项目中编写脚本,并创建用于运行转换版本的脚本,而不是使用REPL:
{
"name": "my-test-chamber",
"private": true,
"scripts": {
"build": "babel src/main.js -o lib/main.js",
"start": "npm run build && node lib/main.js"
},
"dev-dependencies": {
"babel-cli": "^6.0.0"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.