我试图让Node处理导入/导出,但是在"import $" -> Unexpected identifier
的import语句中出现语法错误
节点:
node start.js --experimental-modules
start.js :
(() => {
import $ from "SCRIPT//CommonImport";
});
commonImport.js :
(() => {
export var $ = require("jquery");
});
package.json :
{
"type": "module",
"name": "lc.assets.hyper",
"version": "1.0.0",
"description": "brand new UI for LC Assets",
"main": "start.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Stein Lundbeck",
"license": "ISC",
"devDependencies": {
"jquery": "^3.4.1"
}
}
答案 0 :(得分:4)
您必须像这样在文件顶部声明所有import
:
import $ from "/my/path"
并且您不能在函数内部使用export
语句,必须在模块的上部范围中声明它们。如果使用ES6导入/导出,则不能使用require
(CommonJS),但是可以使用export ... from ...
构造:
export {default as $} from "jquery"
如果要动态导入模块,则必须这样做:
async function myFunc() {
const exportedVar = await import('/my/path')
}
请注意,import()
返回一个Promise
,即它是异步操作,而不是与require
同步。
还请注意,您不能像export
那样动态使用import()
答案 1 :(得分:0)
使用esm模块可以解决问题。
安装:
npm install esm --save-dev
使用:
node -r esm start.js