web-dev-qa-db-ja.com

ロードに時間がかかりすぎるフックオーム

セイルで2つのデータベースアダプターを使用しています。

1つはmondoDBで、2つ目はmysqlで、コマンド「sails lift」を実行するたびにエラーが発生します。

error: Error: The hook `orm` is taking too long to load.
Make sure it is triggering its `initialize()` callback, or else set       `sails.config.orm._hookTimeout to a higher value (currently 20000)
at tooLong [as _onTimeout]   (C:\Users\KAMI\AppData\Roaming\npm\node_modules\sails\lib\app\private\loadHooks.js:92:21)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15

変更せずに帆を再実行すると、エラーは発生しません。どのようにすればこのエラーを毎回回避できますか?.

22
N.A

昨夜、ラップトップとDBサーバー間のインターネット接続が遅いため、この問題に遭遇しました。私の解決策は、configディレクトリにorm.jsという名前の新しいファイルを作成することでした(名前は重要ではありません)。

次に、次のコードを追加します。

// config/orm.js
module.exports.orm = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};

また、pubsubタイムアウトを変更する必要がありましたが、それはあなたにとって必要ではないかもしれません。

// config/pubsub.js
module.exports.pubsub = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};

注:他の回答では、node_modulesフォルダー内のセールファイルを変更することをお勧めします。 npm updateは変更を元に戻す可能性があるため、これはほとんど常に悪い考えです。

39
davepreston

これは、環境ごとに行うのが最善です。 configディレクトリの下には、次のようなものがあります。

env path

次に、それぞれのmodule.exports内に入力します。

module.exports = {

  hookTimeout: 40000

}

属性名の前にアンダースコアを付ける必要もありません。

23
arcseldon

これはかなり古い質問ですが、同じ問題も抱えていました。私は自分のつながりではないと確信しました。

私の解決策は、モデルの移行オプションを変更することです。3つの選択肢があります

  1. 安全-データベースを自動移行しないでください。自分で(手で)やります
  2. alter-自動移行しますが、既存のデータを保持しようとします(実験的)
  3. ドロップ-すべてのデータをワイプ/ドロップし、セイルを持ち上げるたびにモデルを再構築します

Config/models.jsに行き、そこに入れます:

migrate: 'safe'

または使用したい上記のオプション。

9
K20GH

2つの方法があり、おそらく次のように呼ぶことができます。

1-システム全体の方法:(@arcseldonが言ったように)

hookTimeoutキーをプロジェクトのconfig/env/development.jsまたはconfig/env/production.jsファイルに追加してみてください。次に、ほとんどすべてのフック(モジュールローダーなどの一部のフックを除く)がタイムアウト値を取得し、テーマごとに考慮します。

2-フック固有のメソッド:(@daveprestonが言ったように)

プロジェクトの設定フォルダーに[モジュール名] .jsファイルを作成し、_ hookTimeoutキーを追加します。したがって、その特定のモジュールにのみタイムアウト値を割り当てることになります。 (sail configファイルの特定のjson構造に注意してください。)

1
Ehsan

セイルリフトの実行中に、コマンドラインセイルリフトhookTimeout = 75000でこのコマンドを実行します

0
Prem Sai

models.jsファイルに移動してコメントを外しますmigrate: 'alter'

0
Khalil Rahmani

node_modulesフォルダに移動して、\sails\lib\app\privateを参照します

あなたの場合、次のフォルダに移動する必要があります:C:\Users\KAMI\AppData\Roaming\npm\node_modules\sails\lib\app\private

次に、loadHooks.jsという名前のファイルを開き、次の行に移動します。

var timeoutInterval = (sails.config[hooks[id].configKey || id] && sails.config[hooks[id].configKey || id]._hookTimeout) || sails.config.hookTimeout || 20000;

この行の最後の値を20000からより高い値に変更し、ファイルを保存してから、通常どおり「セイルリフト」でアプリケーションを実行します

注意:あなたに合った値に達するまで、20000の代わりにいくつかのより高い値を試してみる必要があるかもしれません。値を50000に変更すると、アプリケーションが正常に解除されました

0
Hesham Usama