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

时间:2020-01-24 02:22:12

标签: javascript node.js protractor

要运行测试,我使用

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扩展名,在我的"type": "module"文件中添加了package.json,但是它们都给出了相同的错误。我应将进口物品放在哪里?我目前在特定的it示例中有它,可以吗?'

请注意,我不会直接运行node命令,而是使用

protractor conf.js

2 个答案:

答案 0 :(得分:2)

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

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

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

node --experimental-modules my-app.mjs

虽然导入确实是ES6的一部分,但是不幸的是,默认情况下NodeJS尚不支持导入,并且最近才在浏览器中提供支持。

如果您真的想在NodeJS中使用ES6 / 7的新功能,则可以使用Babel对其进行编译。

答案 1 :(得分:1)

Node.js包括对ES6支持的实验性支持。在此处了解更多信息: https://nodejs.org/docs/latest-v12.x/api/esm.html#esm_enabling 节点> = v13

保存扩展名为.mjs的文件,或者 将类型作为模块添加到最近的package.json中。 节点

使用扩展名为.mjs的ES6模块保存文件,然后按以下方式运行文件: 节点--experimental-modules my-app.mjs