【问题标题】: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 语句。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-08
          • 1970-01-01
          • 1970-01-01
          • 2021-01-30
          • 1970-01-01
          相关资源
          最近更新 更多