情景重現
a.js
export let test = function () { console.log('1'); }
b.js
let a= require ('./a');
a.test();
運行node b,即出現如下報錯:
export default { ^^^^^^ SyntaxError: Unexpected token export
解決方法
a.js改為如下:
exports.test = function () { console.log('1'); }
根本原因
Node和瀏覽器端所支持的模塊規范不同。
條目 | Node | 瀏覽器 |
---|---|---|
模塊規范 | CommonJS | ES6 |
導出 | * modules.exports ; exports |
export; export default |
引入 | require | import;require |
1. 關於exports和module.exports
在一個node執行一個文件時,會給這個文件內生成一個 exports和module對象,
而module有一個exports屬性。
exports = module.exports = {};
2. 關於 export 和export default
export與export default均可用於導出常量、函數、文件、模塊等
在一個文件或模塊中,export、import可以有多個,export default僅有一個
通過export方式導出,在導入時要加{ },export default則不需要
export能直接導出變量表達式,export default不行。