我是 Javascript 新手,我正在尝试从教程中学习模块。在 Visual Studio Code/VScode 中有一个文件夹,其中有两个文件:script.js 和 external.js。
Script.js 从 external.js 导入内容并将文本打印到控制台。当我使用 node.js 运行配置从 vs code 运行 script.js 时,出现以下错误。有人可以告诉我为什么会发生这种情况以及如何解决它吗?相比之下,Java 中的导入很简单。
import {keyValue} from './external.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1070:16)
at Module._compile (internal/modules/cjs/loader.js:1120:27)
Run Code Online (Sandbox Code Playgroud)
外部.js:
export let keyValue = 1000;
Run Code Online (Sandbox Code Playgroud)
脚本.js:
import {keyValue} from './external.js';
console.log(keyValue);
Run Code Online (Sandbox Code Playgroud)
更新: 节点版本 - v12.16.2,升级到 v14.4.0。
{ type: "module" }到 package.json。{
...
scripts: "...",
type: "module"
}
Run Code Online (Sandbox Code Playgroud)
.js为.mjs.js为.mjs,并使用附加参数运行--experimental-modules。node --experimental-modules script.js
Run Code Online (Sandbox Code Playgroud)
您还可以修复该import statement outside a module问题
不使用 import语句并使用动态导入函数。
脚本.js
import("./external.js").then((module) => {
console.log(module.keyValue);
});
Run Code Online (Sandbox Code Playgroud)
这种形式也支持await关键字。
let module = await import('./external.js');
console.log(module.keyValue)
Run Code Online (Sandbox Code Playgroud)