19

node.js を使用するのはこれが初めてです。index.html を表示するようにしましたが、サイト上の画像などは表示されず、基本的な html のみが表示されます。設定方法は次のとおりです。サーバーには apache や php などはなく、ubuntu、proftp、node (および curl とその他の依存関係) だけです。ノード ファイルのメイン ディレクトリを /var/nodeFiles に、html/site ファイルのディレクトリを /var/nodeFiles/www に作成したので、ノード サーバー ファイルの場合は次のようにしました。

var http = require('http'),
    fs = require('fs');
fs.readFile('/var/nodeFiles/www/index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(80);
});

これは機能しますが、index.html ファイルのみが表示され、それに添付されているものは何も表示されないため、html ファイルに表示される画像、効果、または何も表示されません。ファイルとディレクトリはすべて正しいです。再確認しましたが、フォルダーのアクセス許可は正しいです。では、ノードにサイトの残りの部分を表示させるには、他に何をしなければならないのでしょうか? 自分のことを正しく説明できているといいのですが、ここは開発に関する質問をする場所だと言われました。これを読んでいただきありがとうございます。

4

4 に答える 4

24

ただし、index.html ファイルのみが表示され、それに添付されているものは何も表示されないため、画像、効果、または html ファイルが表示する必要のあるものは何も表示されません。

これは、プログラムでは、リクエストがどのように見えるかに関係なく、ブラウザーに返す唯一のものだからです。

ここで、最も一般的な Web ページ (HTML、JPG、CSS、JS) の正しいファイルを返す、より完全な例を見ることができますhttps://gist.github.com/hectorcorrea/2573391

また、node を使い始める方法について書いたこのブログ投稿もご覧ください。いくつかのことが明確になると思います:http://hectorcorrea.com/blog/introduction-to-node-js

于 2013-03-05T19:11:09.683 に答える
11

この基本コードを確認して、htmlサーバーをセットアップしてください。私のためのその仕事。

var http = require('http')、
    fs = require('fs');


fs.readFile('./ index.html'、function(err、html){
    if(err){
        エラーをスローします。
    }       
    http.createServer(function(request、response){  
        response.writeHeader(200、{"Content-Type": "text / html"});  
        response.write(html);  
        response.end();  
    })。listen(8000);
});

于 2013-03-05T19:03:14.667 に答える
9

これは私にとってはうまくいきました:

var express = require('express'),
app = express(); 
app.use('/', express.static(__dirname + '/'));
app.listen(8080);
于 2015-10-16T19:08:50.313 に答える
1

単純にいくつかの静的ファイルを表示することが目的の場合は、Connect パッケージを使用できます。NodeJS と twitter ブートストラップ API を組み合わせて使用​​することで、ある程度の成功を収めました (私自身はまだ NodeJS にかなり慣れていません)。

コマンドラインで

:\> cd <path you wish your server to reside>
:\> npm install connect

次に、ファイル(私が名前を付けた)Server.jsで

var connect = require('connect'),
   http = require('http');
connect()
   .use(connect.static('<pathyouwishtoserve>'))
   .use(connect.directory('<pathyouwishtoserve>'))
   .listen(8080);

ついに

:\>node Server.js

警告:

ディレクトリの内容を表示したくない場合は、.use(connect.directory.

そのため、「server」というフォルダーを作成し、そのフォルダーに index.html を配置し、同じフォルダーにブートストラップ API を配置しました。次に、コンピュータ IP:8080 にアクセスすると、自動的に index.html ファイルが使用されます。

ポート 80 を使用する場合 (http:// にアクセスするだけで、:8080 やその他のポートを入力する必要はありません)。ノードを sudo で開始する必要があります。セキュリティへの影響はわかりませんが、内部ネットワークに使用するだけであれば、個人的には大したことではないと思います。外の世界に露出することは別の話です。

2014 年 1 月 28 日更新:

私は最新バージョンのもので次のことをする必要はなかったので、最初に上記のように試してみてください.以下。

更新終了

さらに、ubuntu で実行しているときに、nodejs を名前として (NPM を使用して) 使用すると問題が発生しました。この問題が発生している場合は、エイリアスまたは何かを使用して nodejs をノードに「名前変更」することをお勧めします。

私が使用したコマンド (良くも悪くも):

node という名前の新しいファイルを作成します

:\>gedit /usr/local/bin/node
#!/bin/bash
exec /nodejs "$@"

sudo chmod -x /usr/local/bin/node

それは作るべきです

node Server.js 

うまく働く

于 2013-03-05T20:20:47.073 に答える