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バージョンのmeteor 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に貼り付けましたが、他の場所は何も変更しませんでした。これがあなたのやったことだと理解しました)。

次の 2 つの方法があります。

  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 シェルなど) を使用すると、かなり危険なようです。

于 2013-02-14T13:57:26.117 に答える
1

プル リクエストが送信されると、この問題は解決されるはずです。

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

于 2013-02-17T13:44:11.493 に答える