繁体   English   中英

Javascript 模块 - 无法在模块外使用导入语句

[英]Javascript modules - Cannot use import statement outside a module

我是 Javascript 的新手,我正在尝试从教程中学习模块。 在 Visual Studio Code/VScode 中有一个文件夹,其中有两个文件,script.js 和 external.js。

Script.js 从 external.js 导入内容并将文本打印到控制台。 当我使用 node.js 运行配置从 vs 代码运行 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)

外部.js:

export let keyValue = 1000;

脚本.js:

import {keyValue} from './external.js';
console.log(keyValue);

更新:节点版本 - v12.16.2,升级到 v14.4.0。

你的节点是什么版本的?

如果是 13 或更高,您可以执行以下任一操作:

  • { type: "module" }添加到 package.json。
{
  ...
  scripts: "...",
  type: "module"
}
  • .js重命名为.mjs

如果它低于 13,请将.js重命名为.mjs ,并使用附加参数--experimental-modules运行。

node --experimental-modules script.js

或者

您还可以修复import statement outside a module

不使用 import语句,而是使用动态 import function

脚本.js

import("./external.js").then((module) => {
    console.log(module.keyValue);
});

这种形式还支持await关键字。

 let module = await import('./external.js');
 console.log(module.keyValue)

这是因为您使用的是 es6 模块,而不是 node 的默认模块系统,这是常见的 js。 您可以使用 babel 对其进行转译,也可以使用 .mjs 扩展名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM