【问题标题】:Javascript import class from file yields "Uncaught SyntaxError: Unexpected Identifier"来自文件的 Javascript 导入类产生“Uncaught SyntaxError: Unexpected Identifier”
【发布时间】:2019-04-12 03:57:31
【问题描述】:

我正在重构我的 javascript 代码以使其更加面向对象,但我无法获得应用类的最新功能!

首先,我在一个单独的文件中声明该类,如下所示:

// models/player.js 
export default class Player {

   constructor() {
      //loads of code
   }
}

然后,我在我的html中引用该文件如下:

<script src="js/models/player.js" type="module"></script>
<script src="js/game.js" type="text/javascript"></script>

最后,我尝试将类导入到我的主 js 文件中:

// game.js
import Player from './models/player';

但由于某种原因,Chrome(甚至 Canary)在第一行导入时向我抛出了“未捕获的语法错误:意外标识符”!

我正在尝试遵循我可以在网上找到的所有规范和示例。我错过了什么?

【问题讨论】:

  • 您只能在带有type=module 的脚本中使用import
  • 啊啊啊……我还以为是相反的呢!

标签: javascript class ecmascript-6 import


【解决方案1】:

import 和exports 只适用于模块系统,如使用webpack 等。但是当你直接插入脚本文件时,你不需要它:

// models/player.js 
class Player {

   constructor() {
      //loads of code
   }
}

<script src="js/models/player.js" type="text/javascript"></script>
<script src="js/game.js" type="text/javascript"></script>

现在,您可以直接使用该类:(在 game.js 中)

new Player

如果您在插入脚本时更喜欢使用导入导出,那么您必须将其类型指定为模块:

<script src="js/models/player.js" type="module"></script>
<script src="js/game.js" type="module"></script>

【讨论】:

  • 啊……!我认为我需要在类中使用“导入”,但如果你这样说,我宁愿没有!谢谢!这看起来像是我正在寻找的答案!
猜你喜欢
  • 2017-10-13
  • 2015-12-30
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多