我今天正在学习 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 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。/Users/rammurthys/Documents/Angular Tute/JS/b.js:1 导入用户,{f} from './a.js'; ^^^^^^语法错误:无法在 Object.Module 的 Module._compile (internal/modules/cjs/loader.js:1103:27) 的 wrapSafe (internal/modules/cjs/loader.js:1055:16) 的模块外使用 import 语句。 _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 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。/Users/rammurthys/Documents/Angular Tute/JS/a.js:1 导出默认类 User { ^^^^^^SyntaxError:在 Object.Module._extensions 的 Module._compile (internal/modules/cjs/loader.js:1103:27) 的 wrapSafe (internal/modules/cjs/loader.js:1055:16) 处出现意外的令牌“导出”。 .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 代码上执行此操作。请帮助我了解我错过了什么。谢谢
2 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
从 .js 重命名 .mjs 就成功了。谢谢@昆汀!
.mjs 是除了 require {} 之外的两种玩转导出-导入 javascript 的方法之一。
详解: https ://medium.com/passpill-project/files-with-mjs-extension-for-javascript-modules-ced195d7c84a
撒科打诨
TA贡献1934条经验 获得超2个赞
了解 NodeJS 不是 ES6 很重要。您正在尝试做的是 ES6 规范的一部分。默认情况下,NodeJS 中并非所有内容都可用,这.mjs
就是需要扩展的原因。一旦 ES6 在不久的将来完成,NodeJS 也将能够添加支持。
我不建议使用.mjs
扩展。最好使用像 Babel 这样的转译器。Babel 将您的 ES6 代码编译成 NodeJS,而无需更改文件的扩展名。
可以在这里找到类似的信息:https ://medium.com/the-node-js-collection/an-update-on-es6-modules-in-node-js-42c958b890c
添加回答
举报
0/150
提交
取消