【问题标题】:Node.js: SyntaxError: Cannot use import statement outside a moduleNode.js:语法错误:无法在模块外使用 import 语句
【发布时间】:2020-10-10 19:23:08
【问题描述】:
我在尝试从另一个 javascript 文件导入时收到此错误 SyntaxError: Cannot use import statement outside a module。这是我第一次尝试这样的事情。主文件为main.js,模块文件为mod.js。
main.js:
import * as myModule from "mod";
myModule.func();
mod.js:
export function func(){
console.log("Hello World");
}
我该如何解决这个问题?谢谢
【问题讨论】:
标签:
javascript
node.js
import
export
【解决方案1】:
为了使用导入语法(ESModules),您需要在顶层的 package.json 中设置以下内容:
{
// ...
{"type": "module" }
}
如果你使用的 Node 版本早于 13,则需要在运行程序时使用 --experimental-modules 标志
node --experimental-modules program.js
并在 package.json 中添加 {"type": "module" }
希望对你有帮助!
【解决方案2】:
使用commonjs语法代替es模块语法:
module.exports.func = function (){
console.log("Hello World");
}
和
const myMod = require("./mod")
myMod.func()
否则,如果你想使用 es 模块,你必须按照 Achraf Ghellach 的回答建议这样做
【解决方案3】:
我最近遇到了这个问题。此解决方案类似于评分最高的答案,但我发现某些方法对我有用。
在与您的模块相同的目录中创建一个 package.json 文件并添加 "type":"module"。然后使用导入{func} from "./myscript.js";。使用节点运行时,导入样式有效。
【解决方案4】:
除了上面的答案,注意默认情况下(如果“type”被省略)“type”是“commonjs”。因此,当它是“模块”时,您已经明确指定了类型。不能在模块外使用 import 语句。