【发布时间】:2019-05-01 14:47:39
【问题描述】:
期望的行为
我正在尝试将代码从一个文件导入另一个文件:
lib.js
// generate unique id
export const guid = () => {
const s4 = () => {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
// get current date as ISO string
export const currentDateTimeISOString = () => {
var iso_string = new Date().toISOString();
return iso_string;
}
// convert boolean string to boolean
export const stringToBoolean = (val) => {
var a = {
'true': true,
'false': false
};
return a[val];
}
app_es6.js
import { guid, currentDateTimeISOString, stringToBoolean } from './src/js/lib';
实际行为
构建后出现错误:
export const guid = () => {
^^^^^^
SyntaxError: Unexpected token export
我的尝试
我用谷歌搜索了这个错误并遇到了各种解决方案。
最新的方法似乎是:
npm install babel-register babel-preset-env --save-dev
我目前在package.json 中有以下babel 相关的开发依赖项:
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-0": "^6.24.1",
而.babelrc 是:
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
我最近把.babelrc改成了上面的in order to handle async/await usage,以前是:
{
"presets": [
"env",
"stage-0"
]
}
我在package.json 中的构建脚本是:
"build-server-file": "babel app_es6.js --out-file app.js",
我担心实施一个过时的解决方案或破坏代码库另一部分的功能(即,如果我恢复到我以前的.babelrc 版本,那么 async/await 将抛出错误)。我也读过stage-x is depreciated。
问题
在 Node.js 环境中导入/导出 ES6 模块的最新方法是什么,同时仍支持 async/await 的 .babelrc 要求?
【问题讨论】:
-
这是为浏览器构建的吗?如果没有,后端的 Node 从 Node 10 开始支持 ES6 模块。
标签: node.js ecmascript-6 import babeljs