4

同じセットアップと構成で AWS にデプロイされた 2 つの angular-fullstack アプリの間で問題が発生しています。

同じ設定を使用しているにもかかわらず、socket.io-client/socket.io.js が適切に提供されていないようです。

socket.io.js を取得しようとするとエラー 400 (不正な要求) が発生し、「io が定義されていません」と表示されるようです。

このコードに絞り込みました。

var socketio = require('socket.io')(server, {
  serveClient: (config.env === 'production') ? false : true,
  path: '/socket.io-client'
});

serveClient を常に true に設定すると、常にクライアントにサービスを提供しているため、機能するようです。

これが事実である場合、なぜ多くのリソースがオンラインで実動用に serveClient を false に設定するのでしょうか? あるアプリでは機能しますが、他のアプリでは機能しません。

編集: serveClient: true を使用して AWS にデプロイしただけです。うまくいきません。しかし、どうやらそれは私のローカルで動作します。

編集 2:npm install動作中のアプリを実行しましたが、現在は壊れているため、パッケージで何かが壊れている可能性があります。

NODE_ENV=production編集3:同じ問題の後にテストを行ったgrunt build:distので、パッケージの1つに問題があるはずです。

4

1 に答える 1

4

angular-fullstack のビルトイン grunt ファイルは、bower.json のすべての依存関係を (wiredep 経由で) 取得することが判明しました。

縮小プロセスは、すでに縮小された prettify.min.js と何らかの形で互換性がありません (他の縮小ファイルで実際にこの問題が発生したことはありません)。

そのため、wiredep.target.exclude プロパティに正規表現を含めて google-code-prettyify/**/.js ファイルを除外し、縮小されていない /src/prettify.js ファイルを手動で含める必要がありました。

google-code-prettify パッケージが問題を引き起こしていると感じていたのは、JSHint が以前に不平を言ったことを覚えているからです。

これにより、npm パッケージが断続的に破損する可能性があることを認識していただければ幸いです。

于 2015-06-09T20:42:26.847 に答える