繁体   English   中英

节点 - 切换到 ES6 模块时,量角器“SyntaxError:无法在模块外使用导入语句”

[英]Node - Protractor "SyntaxError: Cannot use import statement outside a module" when switching to ES6 modules

为了运行我的测试,我使用

protractor conf.js

我得到

File 'main' needs function 'httpGet' from file 'support.js'

在“主要”中,我从

const { httpGet } = require('./support');

import { httpGet } from './support';

并在支持文件中

exports.httpGet = (siteUrl) => {

export function httpGet(siteUrl) {

但我明白了

import { httpGet } from ('./support');
^^^^^^

SyntaxError: Cannot use import statement outside a module

我尝试使用 .mjs 扩展名,在我的package.json文件中添加"type": "module"但它们都给出了相同的错误。 我把进口放在哪里? 我目前在一个特定的it示例中使用it ,可以吗?

请注意,我不直接运行节点命令,我使用

protractor conf.js

更新 3:从 Node 13 开始,您可以使用 .mjs 扩展名或在 package.json 中设置“type”:“module”。 您不需要使用 --experimental-modules 标志。

更新 2:从 Node 12 开始,您可以使用 .mjs 扩展名或在 package.json 中设置“type”:“module”。 并且您需要使用 --experimental-modules 标志运行节点。

更新:在 Node 9 中,它在一个标志后面启用,并使用 .mjs 扩展名。

节点 --experimental-modules my-app.mjs

虽然 import 确实是 ES6 的一部分,但遗憾的是,NodeJS 默认还不支持它,并且最近才在浏览器中获得支持。

如果你真的想在 NodeJS 中使用新的 ES6/7 特性,你可以使用 Babel 编译它。

Node.js 已包含对 ES6 支持的实验性支持。 在此处阅读更多信息: https : //nodejs.org/docs/latest-v12.x/​​api/esm.html#esm_enabling Node >= v13

使用 .mjs 扩展名保存文件,或在最近的 package.json 中将类型添加为模块。 节点 < v12

使用扩展名为 .mjs 的 ES6 模块保存文件并运行它: node --experimental-modules my-app.mjs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM