2013-03-05 23 views
12

これは初めてnode.jsで表示されます。私はそれがindex.htmlを表示するようになるが、それはサイトや他の何かに画像を表示しない、それは基本的なHTMLのものだけを示しています。ここで私はそれを設定する方法です。 サーバ上にはApache、PHPなど何もありません。ただubuntu、proftp、node(curlとその他の依存関係)だけです。私は、ノードのファイルは/ var/nodeFilesためのメインディレクトリとhtml /サイトファイルのディレクトリを作っている私のノードサーバのファイルのように/ var/nodeFiles/WWW 私はこのようにそれをやった:node.jsでhtmlページを表示

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ファイルとNOTHINGが添付されていることを示しているだけなので、画像もエフェクトもなく、htmlファイルに表示されるべきものはありません。ファイルとディレクトリがすべて正しく、私は二重チェックして、フォルダのアクセス許可が正しいです。それではノードの残りの部分を表示させるにはどうすればいいですか? 私は自分自身を正しく説明してくれることを願っています。これは開発に関する質問をする場所であると言われました。 お読みいただきありがとうございます。

+0

合計の複製はhttp://stackoverflow.com/questions/6126584/how-to-use-node-js-to-build-pages-that-are-a-mix-between-static-and- dynamic-cont?rq = 1 –

+0

基本的に静的なコンテンツを提供したいと思っていますこれまでに投稿された質問はたくさんありました。 –

+0

彼はサーバーファイルにhtmlを生成しています。私は既存のサイトをfsライブラリを使って表示しようとしていました。そのように書き直すのが私のやるべきことなので、そうしてください。 – user2137087

答えて

20

それだけで、それに添付index.htmlファイルとNOTHINGを示していないので、何の画像、 なし効果やhtmlファイルが表示されるはずのもの。

あなたのプログラムでは、要求がどのように見えるかにかかわらずブラウザに戻る唯一のものだからです。

このブログを見て、またここにhttps://gist.github.com/hectorcorrea/2573391

で最も一般的なWebページ(HTML、JPG、CSS、JS)の正しいファイルを返します。より完全な例を見てみることができます私がノードを使い始める方法を書きました。 http://hectorcorrea.com/blog/introduction-to-node-js

+2

あなたのブログはとても役に立ちました。 PHPからノードへの移行には、いくつかの概念を明確にする必要があります。私はちょうど私があなたのブログを送ったいくつかの人々が変換するために少し時間があっている。 – user2137087

+0

あなたがそれを気に入ってうれしいです。 –

+0

私は静的IPを持っていない場合、どのようにAWSでこれを使用するのですか? 'var serverUrl =" 127.0.0.1 ";'と 'var serverUrl =" http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com/ "は動作しません –

5

htmlサーバーを設定するには、この基本的なコードを確認してください。私のためのその仕事。

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


fs.readFile('./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(8000); 
}); 

+2

このディレクトリにのみ 'index.html'と他のファイルは表示されません –

+0

もし私がパスを知らないのであれば、私はこの種類のURLも知っています" www.example.com/example/example1 " – Tripathi29

1

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

:\> 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 

警告:

あなたドンする場合監督を表示したくないyの内容の場合は、.use(connect.directory行。

"server"という名前のフォルダをindex.htmlというフォルダ内に作成し、同じフォルダ内のbootstrap APIを作成しました。その後、コンピュータIP:8080にアクセスすると、自動的にindex.htmlファイルが使用されます。

ポート80を使用したい場合は(http://だけで、8080やその他のポートを入力する必要はありません)。sudoを使ってノードを起動する必要がありますが、セキュリティの意味はわかりませんが、内部ネットワーク用に使用しているのであれば、個人的には大きな問題ではないと思います。外界に暴露することは別の話です。

アップデート2014年1月28日:

私は物事の私の最新バージョンでは以下のことをしなければならなかったので、それが動作しない場合は、まず上記のようにそれを試してみる(とあなたが読んでいませんそれを文句を言うエラーはnodejsを見つけることができません)、先に進んで、おそらく以下を試してください。 Ubuntuの中で実行しているとき

エンド更新

は、さらに私は、あなたがこの問題を抱えているならば、私はnodejsを「名前の変更」するために、エイリアスか何かを使用することをお勧めし、(NPMとの)名前としてnodejsを使用して問題に遭遇しましたノードへ。私は(良くも悪くも)使用

コマンド:

ノード

:\>gedit /usr/local/bin/node 
#!/bin/bash 
exec /nodejs "[email protected]" 

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

うまく

+0

私のブラウザでCan not GET /というエラーが表示されます。アイデア? –

+0

また、静的に '../'を設定すると、undefinedが関数ではないというエラーが表示されます。 –

+0

これはパッケージのアップデートによるものだと思われます。単純な例は、アップデート後に私のために働かなくなりました....私は、最新バージョンが何を使用しているかを見るためにいくつかの掘り下げをしなければならないでしょう今はgithubの例は見ていません)*短いストーリー、ツールのどのバージョンを使用しているのか、それは答えを促すでしょう。 – onaclov2000

5

この

node Server.js 

作業を行うべきと呼ばれる新しいファイルを作成します。私のためのトリックをした:

var express = require('express'), 
app = express(); 
app.use('/', express.static(__dirname + '/')); 
app.listen(8080); 
関連する問題