3

所以我创建了一个默认的流星应用程序。它运行良好。现在我在启动函数中添加一个简单的插入。它现在给了我例外。

这是我的 app.js 代码:

Book = new Meteor.Collection("book");

if (Meteor.isClient) {
  Template.hello.greeting = function () {
    return "Welcome to app_01.";
  };

  Template.hello.events({
    'click input' : function () {
      // template data, if any, is available in 'this'
      if (typeof console !== 'undefined')
        console.log("You pressed the button");
    }
  });
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    if (Book.find().count() === 0) {
      var names = ["Ada Lovelace",
                   "Grace Hopper",
                   "Marie Curie",
                   "Carl Friedrich Gauss",
                   "Nikola Tesla",
                   "Claude Shannon"];
      for (var i = 0; i < names.length; i++)
        Book.insert({name: names[i], score: Math.floor(Math.random()*10)*5});
    }
  });
}

这是我得到的例外:

No dependency info in bundle. Filesystem monitoring disabled.
Errors prevented startup:
Exception while bundling application:
Error: ENOTEMPTY, directory not empty 'C:\Users\Office\Workspace\Code\Meteor\app_01\.meteor\local\build\server'
    at Object.fs.rmdirSync (fs.js:456:18)
    at Object.module.exports.rm_recursive (C:\Program Files (x86)\Meteor\app\lib\files.js:256:10)
    at C:\Program Files (x86)\Meteor\app\lib\files.js:254:15
    at Array.forEach (native)
    at Function._.each._.forEach (C:\Program Files (x86)\Meteor\lib\node_modules\underscore\underscore.js:79:11)
    at Object.module.exports.rm_recursive (C:\Program Files (x86)\Meteor\app\lib\files.js:252:9)
    at _.extend.write_to_directory (C:\Program Files (x86)\Meteor\app\lib\bundler.js:493:11)
    at Object.exports.bundle (C:\Program Files (x86)\Meteor\app\lib\bundler.js:685:12)
    at exports.run.restart_server (C:\Program Files (x86)\Meteor\app\meteor\run.js:615:26)
    at C:\Program Files (x86)\Meteor\app\meteor\run.js:726:9

Please fix the problem and restart.

控制台根本没有给我任何有用的信息。

更多信息:我正在使用 windows 版本的流星 0.5.4 我的代码同时包含制表符和空格作为缩进(这应该是个问题吗?)


增加我的困惑:如果我运行排行榜示例,它运行完美。

当我使用修改后的启动代码运行默认项目时,出现异常。>.<


更多信息:当服务器崩溃时,mongod 服务仍在 windows 中运行。在我无限的智慧中,我想我会杀了它,也许尝试重新启动它。

现在我得到一个新错误:

PS C:\Users\Office\Workspace\Code\Meteor\app_01> meteor
[[[[[ C:\Users\Office\Workspace\Code\Meteor\app_01 ]]]]]

Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Can't start mongod

MongoDB had an unspecified uncaught exception.
Check to make sure that MongoDB is able to write to its database directory.

编辑:现在删除了 .meteor/local/db 内容。我们现在回到 ENOTEMPTY 错误。

4

3 回答 3

5

这是因为在捆绑操作期间目录没有被删除。

因此,当发生这种情况时,请使用 . 停止您的服务器ctrl + c

然后删除.meteor\local\db目录以及目录的内容并使用命令.meteor\local\builds再次运行服务器。meteor

不是一个理想的方式,但它的工作原理。

于 2013-02-14T14:05:32.677 回答
2

刚刚在我的 Mac 和我的 Windows 机器上测试了这个,它对我来说很好。(将您的代码复制并粘贴到 app.js 中,在其他任何地方都没有更改,因为我知道这就是您所做的)。

有两种方法可以继续:

  1. 你试试meteor reset警告:这将清空您在此应用程序中拥有的所有数据库,但我认为目前那里没有任何重要的东西?
  2. 您删除应用程序并使用创建一个新应用程序meteor create appname,然后将上面的源代码复制到 app.js 中。

我认为投入太多时间和精力是不值得的,因为它不是一个接近生产阶段的应用程序。但是,如果创建一个新应用程序会导致同样的问题,它会变得有趣 =)

编辑:刚刚四处搜索,发现了这个:https ://github.com/TomWij/meteor/issues/18 向下滚动到答案;显然,它可能是您的防病毒扫描程序阻止 Meteor 重建它。那可能吗?另外,你是从 cmd.exe 以外的任何东西启动 Meteor 吗?我刚刚在 GitHub 上阅读了这个问题,当使用 cmd.exe 以外的任何东西(例如 GitHub Bash Shell)时,事情似乎很棘手

于 2013-02-14T13:57:26.117 回答
1

一旦我的拉取请求进入,这个问题应该得到解决:

https://github.com/TomWij/meteor/pull/56

于 2013-02-17T13:44:11.493 回答