我试图使用es6模块,但我遇到了错误:
SyntaxError:意外的标识符' {'。导入调用预期 只有一个论点。
顺便说一句,这是在macOS 10.13上的Safari 11中。
这是我的模块:
export class GameObject {
//code
}
export class GameLoop {
//code
}
相关的html:
<body>
<script type="module" src="gameFoundation.js"></script>
<script src="gameTest.js"></script>
</body>
和尝试使用该模块的脚本,它在第1行给出了上述错误:
import { GameObject, GameLoop } from "./gameFoundation.js"
class Rect extends GameObject {
//code
}
我是JavaScript的新手,所以我想我得到了一些基本错误的东西。任何帮助将非常感激。
答案 0 :(得分:9)
您的导出已命名为,但您使用默认导入语法。您需要在{...}
中包含您要导入的内容的名称:
import { GameObject } from "./gameFoundation.js";
import { GameLoop } from "./gameFoundation.js";
如果您愿意,也可以使用一个导入声明:
import { GameObject, GameLoop } from "./gameFoundation.js";
另请注意,import
仅在模块中有效,因此您需要更改:
<script src="gameTest.js"></script>
到
<script type="module" src="gameTest.js"></script>
答案 1 :(得分:2)
命名导出将适合您。
替换
import GameObject from "./gameFoundation.js"
import GameLoop from "./gameFoundation.js"
到
import { GameObject, GameLoop } from "./gameFoundation.js"
Here是关于所有ES6 导入/导出的好文章。对你来说很有用。
答案 2 :(得分:1)
在es6中进行这样的导入:
import GameObject from "./gameFoundation.js"
您的导出应如下所示:
export default class GameObject { }
在你的情况下,你需要像这样进行导入:
import { GameObject, GameLoop } from './gameFoundation.js'
答案 3 :(得分:0)
您使用的是ES6语法,需要将其转换为原生的普通旧JavaScript语法才能加载到浏览器中。
请参考以下链接: https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them
它将指导您解决问题的转录程序。