2

動作中のSocket.io、AngularJS、ExpressJS 3.xプロジェクトを新しいYeoman:ExpressStackにマージしようとしています。

まず、 https://github.com/yeoman/yeoman/tree/express-stackに記載されている指示に従うことから始めました。

yeomen init anglecrud#標準のAngularアプリ

yeomen init anglecrud:crud post#AngularCRUDルート/ビュー

yeomen init express post#Express CRUD

ヨーマンサーバー

コードを注意深くマージして、各ポイントで新しいコードが機能することを確認しました。このプロセスは、socket.ioを追加するまで成功します。その時点で、「yeoman server」を実行すると、「/ socket.io / socket.io.js Not Found」というエラーが発生します。これは、次の質問Socket.ioがノードによって処理されていない場合のエラーとほぼ同じです。 jsサーバー。質問に対するFirstZeroの回答の中で、彼は「node_modulesは、サーバールートの上ではなく、server.jsと同じディレクトリにある必要がある」と述べています。Yeoman:Express Stackが作成するディレクトリ設定では、これはまさに状況であり、node_modulesはサーバールート(index.js)の1レベル上にあります。index.jsをnode_modulesと同じレベルに移動するだけでは、モジュールが見つからないというエラーが発生します。

Yeoman:Expressがsocket-ioで動作するように設定を変更する方法を知りたいです。

4

2 に答える 2

0

モジュールの問題に対する別のアイデアとして、/yeoman-custom dir に移動してそこにインストールしてみてください。これは、yeoman-custom/cli/tasks/server.js が Node.js で提供する実際のルートです。

于 2013-02-03T07:16:49.100 に答える
0

ここ数日、このブランチを少しテストしてきましたが、socket.io クラスではありません。node_modules が server/ ではなくプロジェクト ルートにあることはよくわかっています。

グローバルとして npm を介して socket.io をインストールするか、require('../socket.io') などの前に ../ を配置する必要がある場合があります。また、Express ルート定義の最後にワイルドカード ルートを含めるという、ほとんどの Express/Angular スタブ/シード/サンプルにもあることを行います。

キャッチオールルートも必要な場合、および/または html5mode を true に設定する場合は、以下のように定義するか、クライアントセッションを自己参照ロードループに角度スパイラルする必要があります。

app.get(/^((?!\/styles|scripts\/).)*$/, function(req, res){
  res.render('<app_path>/app/index.html'); // or chrome.html if you call it such

});

多少役立つことを願っています

于 2013-02-03T06:50:25.427 に答える