节点 – 实验模块,请求的模块不提供名为的导出

我已经安装了8.9.1

我试图运行我的js文件与模块,没有巴贝尔,但我得到

“意外令牌导入”

node --experimental-modules server.js (node:4016) ExperimentalWarning: The ESM module loader is experimental. /Users/cherdave/projects/pelemobil/peleserver/src/server.js:1 (function (exports, require, module, __filename, __dirname) { import express from 'express'; ^^^^^^ 

更新:

我必须将我的.js主文件更改为.mjs扩展名。 我再次运行:

 node --experimental-modules server.js 

我得到:

 The requested module does not provide an export named 'getReq' (node:4748) ExperimentalWarning: The ESM module loader is experimental. SyntaxError: The requested module does not provide an export named 'getReq' at checkComplete (internal/loader/ModuleJob.js:75:27) at moduleJob.linked.then (internal/loader/ModuleJob.js:58:11) at <anonymous> 

更新2:

在另一个案例中,我也遇到了同样的错误。 问题是.mjs扩展名。 使用模块导入项目中的所有文件必须具有.mjs扩展名(不仅是主入口文件),这一点很重要。 mjs还有很多问题,你不能使用require(),看起来真的非常复杂,所以最好还是等待node 10。 清单:在http://2ality.com/2017/09/native-esm-node.html上要注意的事项

你必须使用.mjs扩展名。

一旦设置完成,以.mjs结尾的文件将能够作为ES模块加载。

参考: https : //nodejs.org/api/esm.html

更新:

看起来你还没有导出方法。

假设我有hello.mjs内容

 export function sayHello() { console.log('hello') } 

我可以像这样在index.mjs使用它

 import {sayHello} from './hello.mjs' sayHello()