【发布时间】:2020-07-18 13:00:57
【问题描述】:
我今天正在学习 JavaScript。我在同一目录中创建了两个文件 'a.js' 'b.js'。
a.js 代码
export default class User {
constructor(n) {
this._a = n;
}
}
export function f(n) {
console.log("Funct");
}
b.js 代码:
import User, {f} from './a.js';
var u = new User("hey");
console.log(u, u._a);
f();
当我运行 node b.js 时,出现如下错误:
(node:47205) 警告:要加载 ES 模块,请设置 "type": "module" in package.json 或使用 .mjs 扩展名。 /Users/rammurthys/Documents/Angular Tute/JS/b.js:1 导入用户,{f} 来自'./a.js'; ^^^^^^
SyntaxError: 不能在模块外使用 import 语句 在 wrapSafe (internal/modules/cjs/loader.js:1055:16) 在 Module._compile (internal/modules/cjs/loader.js:1103:27) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1159:10) 在 Module.load (internal/modules/cjs/loader.js:988:32) 在 Function.Module._load (internal/modules/cjs/loader.js:896:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) 在 internal/main/run_main_module.js:17:47
如果我运行 node a.js,它会抛出如下错误。
(node:47321) 警告:要加载 ES 模块,请设置 "type": "module" in package.json 或使用 .mjs 扩展名。 /Users/rammurthys/Documents/Angular Tute/JS/a.js:1 导出默认值 类用户{ ^^^^^^
SyntaxError: 意外标记“导出” 在 wrapSafe (internal/modules/cjs/loader.js:1055:16) 在 Module._compile (internal/modules/cjs/loader.js:1103:27) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1159:10) 在 Module.load (internal/modules/cjs/loader.js:988:32) 在 Function.Module._load (internal/modules/cjs/loader.js:896:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) 在 internal/main/run_main_module.js:17:47
我正在使用节点 v13.5.0。 在 VS 代码上执行此操作。
请帮助我了解我缺少什么。谢谢
【问题讨论】:
-
错误消息的第一行告诉您可以做两件事来解决这个问题。你试过了吗?
-
我们是否需要 package.json 只是为了简单地执行一个 JS 文件?
-
错误信息的第一行告诉你两件你可以做的事情来解决这个问题。如果你不喜欢一个,那就试试另一个。
-
哦,是的,使用 .mjs 重命名有效!谢谢 。我知道为什么需要这样做。
标签: javascript node.js