セイルで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
変更せずに帆を再実行すると、エラーは発生しません。どのようにすればこのエラーを毎回回避できますか?.
昨夜、ラップトップと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
は変更を元に戻す可能性があるため、これはほとんど常に悪い考えです。
これはかなり古い質問ですが、同じ問題も抱えていました。私は自分のつながりではないと確信しました。
私の解決策は、モデルの移行オプションを変更することです。3つの選択肢があります
- 安全-データベースを自動移行しないでください。自分で(手で)やります
- alter-自動移行しますが、既存のデータを保持しようとします(実験的)
- ドロップ-すべてのデータをワイプ/ドロップし、セイルを持ち上げるたびにモデルを再構築します
Config/models.jsに行き、そこに入れます:
migrate: 'safe'
または使用したい上記のオプション。
2つの方法があり、おそらく次のように呼ぶことができます。
1-システム全体の方法:(@arcseldonが言ったように)
hookTimeoutキーをプロジェクトのconfig/env/development.jsまたはconfig/env/production.jsファイルに追加してみてください。次に、ほとんどすべてのフック(モジュールローダーなどの一部のフックを除く)がタイムアウト値を取得し、テーマごとに考慮します。
2-フック固有のメソッド:(@daveprestonが言ったように)
プロジェクトの設定フォルダーに[モジュール名] .jsファイルを作成し、_ hookTimeoutキーを追加します。したがって、その特定のモジュールにのみタイムアウト値を割り当てることになります。 (sail configファイルの特定のjson構造に注意してください。)
セイルリフトの実行中に、コマンドラインセイルリフトhookTimeout = 75000でこのコマンドを実行します
models.jsファイルに移動してコメントを外しますmigrate: 'alter'
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
に変更すると、アプリケーションが正常に解除されました