2012-03-09 4 views
32

に接続すると、「/取得することはできません」私はこのようなconnectを使用して、いくつかの静的なWebページを提供開始しようとしている:は、Node.jsの

var connect = require("connect"); 
var nowjs = require("now"); 
var io = require("socket.io"); 


var app = connect.createServer(
    connect.static(__dirname + '/public') 
); 

app.listen(8180); 

だから私は同じに/publicディレクトリでシンプルなindex.htmlを追加しましたapp.jsファイルとしてディレクトリがあるが、私は私のブラウザでページを表示しようとすると、私は、ノードからこの応答を取得:

は/

を得ることができません

私は間違っていると私はそれを修正することができますか?

答えて

10

このコードが動作するはず:

var connect = require("connect"); 

var app = connect.createServer().use(connect.static(__dirname + '/public')); 

app.listen(8180); 

また非推奨接続2.0 .createServer()メソッド。代わりにconnect()を使用してください。

var connect = require("connect"); 

var app = connect().use(connect.static(__dirname + '/public')); 

app.listen(8180); 
+7

ああ、ありがとうございます。これらの古いnode.jsの記事はすべて、廃止予定のものと本当に混同しています。 –

+0

私はこれらの両方を試してみて、どちらもundefinedが関数ではないと言っています。最初の例では、これは.createServer()が関数ではなく、2番目の例では__dirnameが無効であることを示しています。 –

-1

あなたは通常、このようなテンプレートをレンダリングしたい:

app.get('/', function(req, res){ 
    res.render('index.ejs'); 
}); 

あなたも、静的なコンテンツを配信することができますが - その使用を行うに:今

app.use(express.static(__dirname + '/public')); 

/publicディレクトリ内のすべてをあなたのプロジェクトのあなたのサイトのルートで静的なコンテンツとして配信されます/default.htmにアクセスしてdefault.htmをパブリックフォルダに配置する場合

express APIとConnect Staticミドルウェアのドキュメントを参照してください。

1
var connect = require('connect'); 
var serveStatic = require('serve-static'); 
var app = connect(); 
app.use(serveStatic('../angularjs'), {default: 'angular.min.js'}); app.listen(3000); 
+0

angularjsディレクトリを作成します。その内部にindex.htmlファイルを作成します。 – prashantsahni

+0

このコードブロックは質問に答えるかもしれませんが、それがなぜそうするのかについて少し説明をすることができれば最高です。 – PlasmaHH

+0

私はジョブを行うserveStaticモジュールを使用しています。 – prashantsahni

24
あなたが Apress PRO AngularJS本を読んでいるので、あなたはここにあり

... KnarfaLingusによってthis questionにコメントに記載されているように

[STARTのQUOTE]

ザ・接続モジュールが再構成されました。操作を行います。

npm install connect 

ともその後、あなたのserver.jsのように書くことができ

npm install serve-static 

:私はそれを行うもののとして、[ENDのQUOTE]

var connect = require('connect'); 
var serveStatic = require('serve-static'); 
var app = connect(); 

app.use(serveStatic('../angularjs')); 

app.listen(5000); 

本は、より簡潔な方法で、このように示唆しています:

var connect = require('connect'); 
var serveStatic = require('serve-static'); 

connect().use(
    serveStatic("../angularjs") 
).listen(5000); 
+4

これは、プロ角形のおかげで私の問題を解決しました! – rfresia

+1

これもありがとう、私は私の解決に役立ちました。ちなみに、私はProAngularJSの本をMacBookProでセットアップしようとしています。私は、 "Apress/angularjs"というディレクトリを構築しました。ここで、server.jsは "Apress"ディレクトリにあります。その場合、server.jsコードのパスはserveStatic( "angularjs")になります。私がしたら、Apressの本の第1章の簡単なテストが成功し、テストページの提供に成功しました。あなたの投稿のためにもう一度@Serjに感謝します。 –

+1

ありがとうございました.Press book – zencv

1

またST、静的ファイルを提供するためのノードモジュールを試してみたいことがあります。セットアップは簡単です。

var connect = require('connect'); 
var http = require('http'); 
var st = require('st'); 

var app = connect() 
    .use(st('app/dev')); 

http.createServer(app).listen(8000); 

か(キャッシュを無効にして)::

var connect = require('connect'); 
var http = require('http'); 
var st = require('st'); 

var app = connect(); 

var mount = st({ 
    path: 'app/dev', 
    cache: false 
}); 

http.createServer(function (req, res) { 
    if (mount(req, res)) return; 
}).listen(8000); 

app.use(mount); 
0

静的なファイルを提供する最も簡単な方法はにある私のサーバー-dev.jsファイルがどのように見えるかここ

npm install connect 

npm install st 

そしてです"harp"を使用してください。それはここで見つけることができます。あなたはノード経由であなたが望む場所からあなたのファイルを提供することができます:

var harp = require("harp") 
harp.server(projectPath [,args] [,callback]) 

これが役に立ちます。

2

同じ問題がありました。上記のように解決されました。

私のindex.jsで

var port = 1338, 
express = require('express'), 
app = express().use(express.static(__dirname + '/')), 
http = require('http').Server(app), 
io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(port, function(){ 
    console.log("Node server listening on port " + port); 
}); 

と私のindex.htmlで

<!doctype html> 
<html> 
    <head> 
     <title> 
      My page 
     </title> 
    </head> 
    <body> 
     <script src = "lib/socket.io.js"></script> 
     <script src = "lib/three.js"></script> 
     <script> 
      var socket = io(); 
     </script> 
    </body> 
</html> 

three.jsは、パスのテストのためにそこにありました。これにより、すべての子ファイルがアプリケーションのルートディレクトリから開始されるように設定されます。また、socket.io.jsは暗い魔法を使って<script src = "/socket.io/socket.io.js">を使って自動的に呼び出すことができます(その間にnode_modulesとlibディレクトリが物理的に存在するため)。

10

取得しようとしているページが指定されていない場合、つまりURLがhttp://localhost:8180の場合は、メッセージCannot GET /が表示されます。ページ名を入力してください(例: http://localhost:8180/index.html

+0

についてのヒントについては...うん...それはちょうど私に起こった。 –

+0

また、静的ファイルなどの間違ったパスがある場合は同じ動作をします – Mick

+0

このソリューションはexpress.jsを使用している人にとってはほとんど機能します – lasec0203