说Namespace已经宣布'当我只宣布一次

时间:2014-10-15 16:58:11

标签: javascript html html5 require google-closure

新手问题在这里,因为我刚刚开始使用lime.js进行游戏开发,但我在下面收到此错误,而我在生活中无法弄清楚为什么这个错误会说{{1}已经宣布了,因为我只提供了一次!

这是完整的错误:

'moba.Bullet'

在查看base.js中错误的位置时,我收到了以下代码:

Uncaught Error: Namespace "moba.Bullet" already declared. 
   goog.provide base.js:
   (anonymous function)

我只提供名称空间一次!这使得这更令人困惑!!

要了解此问题,将有助于查看我的文件结构。

我的lime.js游戏的文件夹结构如下所示:

goog.provide = function(name) {
  if (!COMPILED) {
    // Ensure that the same namespace isn't provided twice.
    // A goog.module/goog.provide maps a goog.require to a specific file
    if (goog.isProvided_(name)) {
      throw Error('Namespace "' + name + '" already declared.');
    }
  }

我甚至运行了bin / lime.py更新,因此moba.js(主要的js文件)会识别bullet.js!

现在我们来看看如何用goog.provide和goog.require调用每个文件。

limejs >
  moba >
    moba.html
    moba.js
    bullet.js
  bin >
    lime.py
    projects
    external >
  closure
  box2D

我不知道从哪里开始。我试过通过命令行重新创建项目,但没有爱。所以,请帮助并感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我也是新手但是看了下面的代码我发现第一个if语句缺少结束标记:

goog.provide = function(name) {
  if (!COMPILED) {
    // Ensure that the same namespace isn't provided twice.
    // A goog.module/goog.provide maps a goog.require to a specific file
    if (goog.isProvided_(name)) {
      throw Error('Namespace "' + name + '" already declared.');
    }
  }

有时忘记关闭if语句会导致很多问题。希望这会有所帮助。

答案 1 :(得分:0)

如果你看第一行你看到开始标记,那么if(!COMPILED)的第二行有一个开始标记,然后在第五行是if(goog.isProvided_(name))和另一个开始标记,但在该代码的末尾只有两个结束标签,我认为应该有第三个。