[英]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.