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 语句”