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

Pop*_*nel 8 javascript ecmascript-6

我正在尝试使用es6模块,但我遇到了一个错误:

SyntaxError:意外的标识符'{'.import call只需要一个参数.

顺便说一句,这是在macOS 10.13上的Safari 11中.

这是我的模块:

export class GameObject {
    //code
}

export class GameLoop {
    //code
}
Run Code Online (Sandbox Code Playgroud)

相关的HTML:

<body>
    <script type="module" src="gameFoundation.js"></script>
    <script src="gameTest.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

和尝试使用该模块的脚本,它在第1行给出了上述错误:

import { GameObject, GameLoop } from "./gameFoundation.js"

class Rect extends GameObject {
    //code
}
Run Code Online (Sandbox Code Playgroud)

我是JavaScript的新手,所以我想我得到了一些基本错误的东西.任何帮助将非常感激.

T.J*_*der 9

您的导出已命名,但您使用的是默认导入语法.您需要包装要导入的名称{...}:

import { GameObject } from "./gameFoundation.js";
import { GameLoop } from "./gameFoundation.js";
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您也可以使用一个导入声明:

import { GameObject, GameLoop } from "./gameFoundation.js";
Run Code Online (Sandbox Code Playgroud)

另请注意,import它仅在模块中有效,因此您需要更改:

<script src="gameTest.js"></script>
Run Code Online (Sandbox Code Playgroud)

<script type="module" src="gameTest.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但是现在我收到一个错误消息:“意外标记'{'。导入调用恰好需要一个参数。” 知道为什么会这样吗?我将更新问题以反映错误。 (3认同)
  • @PopKernel:还要确保你使用的浏览器支持模块(大多数还没有,我不知道Safari 11,但Safari在模块上的曲线领先)以及你正在使用的脚本` import`有`type ="module"`,例如`<script type ="module"src ="filename.js"> </ script>`或`<script type ="module">/*code here*/< /脚本>`.如果您需要定位不支持模块的浏览器,您需要一个像Webpack或Browserify这样的捆绑器. (2认同)

The*_*son 5

命名导出将适合您。

代替

import GameObject from "./gameFoundation.js"
import GameLoop from "./gameFoundation.js"
Run Code Online (Sandbox Code Playgroud)

import { GameObject, GameLoop } from "./gameFoundation.js"
Run Code Online (Sandbox Code Playgroud)

这是一篇关于所有 ES6导入/导出的好文章。对您阅读会有用。