web-dev-qa-db-ja.com

Node.jsのConnectで「GET /できません」

次のようなconnectを使用して、いくつかの静的Webページの提供を開始しようとしています。

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


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

app.listen(8180);

したがって、index.htmlファイルと同じディレクトリの/publicディレクトリに単純なapp.jsを追加しましたが、ブラウザでページを表示しようとすると、ノードから次の応答が返されます。

取得することはできません /

私が間違っていることと、それを修正する方法は?

49
Nathan Campos

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

var connect = require("connect");

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

app.listen(8180);

また、connect 2.0では.createServer()メソッドは廃止されました。代わりにconnect()を使用してください。

var connect = require("connect");

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

app.listen(8180);
14
Vadim Baryshev

Apress PRO AngularJS本を読んでいるので、ここにいるかもしれません...

KnarfaLingusによる この質問 へのコメントで説明されているように:

[見積もりを開始]

接続モジュールが再編成されました。行う:

npm install connect 

および

npm install serve-static

その後、server.jsは次のように記述できます。

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);
25
Serj Sagan

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

19
Stuart Hallows

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

私の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ディレクトリがあるため)。

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

「Cannot Get /」に対する解決策は、通常、コマンドラインで「ng build」を実行する場合に決定できます。ほとんどの場合、「インポート」の1つに正しいパスがないことがわかります。

1
Gerard Lanphear

また、静的ファイルを提供するためのノードモジュールであるstを試すこともできます。セットアップは簡単です。

npm install connect

npm install st

そして、私のserver-dev.jsファイルは次のようになります。

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);
1
Wojciech Fornal

静的ファイルを提供する最も簡単な方法は、「ハープ」を使用することです。こちらにあります。 node経由で希望する場所からファイルを提供できます:

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

お役に立てれば。

0
Sesha Kiran

app.getrestartが機能している場合、notプロセスが必要になる場合があります。 ctl+cを押し、次にrestart node appを押します。

0
Ashwani Panwar