Node.js:SyntaxError:无法在模块外部使用导入语句

时间:2020-06-20 16:56:12

标签: javascript node.js import export

尝试从另一个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");
}

我该如何解决?谢谢

4 个答案:

答案 0 :(得分:12)

为了使用导入语法(ESModules),您需要在package.json中设置以下内容:

{"type": "module" }

如果使用的Node版本早于13,则在运行程序时需要使用--experimental-modules标志

node --experimental-modules program.js

并在package.json中添加{“ type”:“ module”}

希望有帮助!

答案 1 :(得分:5)

使用commonjs语法而不是es模块语法:

module.exports.func = function (){
    console.log("Hello World");
}

const myMod = require("./mod")
myMod.func()

否则,如果要使用es模块,则必须按照Achraf Ghellach的建议进行操作

答案 2 :(得分:1)

我最近遇到了这个问题。此解决方案类似于评分最高的答案,但我发现某些方法对我有用。

在与您的模块相同的目录中创建一个 package.json 文件并添加 "type":"module"。然后使用导入 {func} from "./myscript.js";。使用 node 运行时导入样式有效。

答案 3 :(得分:0)

除了上面的答案,请注意默认情况下(如果省略“type”)“type”是“commonjs”。因此,当它是“模块”时,您已经明确指定了类型。不能在模块外使用 import 语句。