当我尝试从另一个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");
}
我该怎么做?谢谢
8条答案
按热度按时间e5nszbig1#
为了使用导入语法(ESModules),您需要将以下内容添加到您的package.json的顶层:
如果您使用的Node版本早于13,则在运行程序时还需要使用
--experimental-modules
标志:kd3sttzy2#
使用commonjs语法而不是es模块语法:
以及
否则,如果你想使用es模块,你必须按照Achraf Ghellach的建议去做
nfg76nw03#
我最近遇到了这个问题。这个解决方案类似于评分最高的答案,但我发现有些方法对我很有效。
在你的模块所在的目录下创建一个package.json文件并添加
"type":"module"
。然后使用import{func} from "./myscript.js";
。当使用node运行时,import风格有效。wyyhbhjk4#
除了上面的答案,注意默认情况下(如果省略了“type”),“type”是“commonjs”。因此,当类型是“module”时,您已经显式指定了类型。您不能在模块之外使用import语句。
tp5buhyn5#
如果您在浏览器中(而不是节点环境),请确保在
script
标记中指定type="module"
属性。如果要使用Babel,则必须为type="text/babel" data-plugins="transform-es2015-modules-umd" data-type="module"
。vaj7vani6#
对于浏览器(前端):在script标记内添加type =“module”,即
对于节点j:在package.json文件中添加
"type": "module"
oxalkeyp7#
我在尝试用 typescript 运行摩卡测试时遇到了这个问题。这与答案没有直接关系,但可能会有所帮助。
This article非常有趣,他使用了一个涉及
cross-env
的技巧,允许他以commonjs模块类型运行测试,这对我很有效。s8vozzvw8#
我在另一个模块(python-shell)中遇到了同样的问题。我将代码替换如下:
这就解决了问题。