javascript es6 import"只需要一个参数"

时间:2018-01-07 18:41:07

标签: javascript ecmascript-6

我试图使用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的新手,所以我想我得到了一些基本错误的东西。任何帮助将非常感激。

4 个答案:

答案 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

它将指导您解决问题的转录程序。