[英]why export and import error in node.js 9?
我正在学习javascript不久。 我制作了两个文件,如下所示。 app.js:
import * as Conf from './conf'
console.log(Conf.a)
conf.js:
export let a = 1
我只是在控制台中运行命令:
node app.js
这是错误的。 错误信息:
(function (exports, require, module, __filename, __dirname) { import *
as Conf from './conf'
SyntaxError: Unexpected token import
谁能告诉我为什么? 以及有关javascript和babel等的信息。 我对这些概念不太熟悉。 谢谢。
每年都会推广一个新的JavaScript规范,称为ECMA 2015(ES6),ECMA 2016(ES7),ECMA 2017(ES8)...
每个规范都描述了javascript必须具备的功能。
市场上存在多个JavaScript引擎:
等等
这些引擎试图遵守规范,但并非100%兼容。
在这里,您可以看到有关引擎和ES6的兼容性表。
您现在可以想象的问题是:“为什么要立即使用全新的ES8?”。 有两个答案:要么等待node.js实施它,要么使用像Babel这样的编译器 。
Babel将您执行的代码转换为与node.js完全兼容的旧规范(ES5)。
例如,您要使用import
(ES6功能)。 Babel会将您的import
转换为require
以便node.js可以执行它。
使用转译器非常有用且强大,因此您可以立即使用最后一个可提高开发人员团队生产力的功能。
就像@Tuan Anh Tran所说的那样,您可以使用一个标记对node.js进行运行以运行其实验性功能,这些功能代表其当前正在实现的功能(对于生产而言并不是特别安全) 。
这是有关ES6功能的文章。
这是有关ES7功能的文章。
这里介绍ES8的功能。
正如其他答案已经指出的那样,关键字import
和export
是实验性的。
这就是为什么我建议使用require()
:
您的app.js :
let conf = require("./conf");
console.log(conf.a);
您的conf.js :
let a = 1;
exports.a = a;
然后, node app.js
将向控制台输出1
。
您需要安装Babel或其他编译器,才能在NodeJS中使用ES6导入/导出。
您可以在这里找到Babel安装: https : //babeljs.io/docs/setup/#installation
您也可以使用NodeJS模块加载系统。
文件: https : //nodejs.org/api/modules.html
在您的情况下:
app.js
var conf = require('./conf');
console.log(conf);
conf.js
let a = 1;
module.exports = a;
要么
app.js
var conf = require('./conf');
console.log(conf.a);
conf.js
let a = 1;
exports.a = a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.