Node.js:语法错误:无法在模块外使用 import 语句

Posted

技术标签:

【中文标题】Node.js:语法错误:无法在模块外使用 import 语句【英文标题】:Node.js: SyntaxError: Cannot use import statement outside a module 【发布时间】: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");

我该如何解决这个问题?谢谢

【问题讨论】:

哪个版本的nodejs? 这能回答你的问题吗? SyntaxError: Cannot use import statement outside a module @gautam1168 v12.16.2 【参考方案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 语句。

【讨论】:

以上是关于Node.js:语法错误:无法在模块外使用 import 语句的主要内容,如果未能解决你的问题,请参考以下文章

导入 ReactJS 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

导入 ECMAScript 6 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”

使用 Vue Js 运行 Jest 测试时出现“语法错误:无法在模块外使用 import 语句”

使用带有 lit-html 的打字稿编写测试时出现“语法错误:无法在模块外使用 import 语句”

尝试在 Django 应用程序的 js 文件中导入 vue.js 时出现“未捕获的语法错误:无法在模块外使用 import 语句”