我正在使用此处的教程:http://addyosmani.github.io/backbone-fundamentals/#create-a-simple-web-server并添加了以下代码。
// Module dependencies.
var application_root = __dirname,
express = require( 'express' ), //Web framework
path = require( 'path' ), //Utilities for dealing with file paths
mongoose = require( 'mongoose' ); //MongoDB integration
//Create server
var app = express();
// Configure server
app.configure( function() {
//parses request body and populates request.body
app.use( express.bodyParser() );
//checks request.body for HTTP method overrides
app.use( express.methodOverride() );
//perform route lookup based on url and HTTP method
app.use( app.router );
//Where to serve static content
app.use( express.static( path.join( application_root, 'site') ) );
//Show all errors in development
app.use( express.errorHandler({ dumpExceptions: true, showStack: true }));
});
//Start server
var port = 5000;
app.listen( port, function() {
console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );
});
使用node server.js
启动服务器后,当我访问Cannot GET /
时,我收到错误,指出localhost:5000
,我只是想知道是否有人对此错误了解多少,因为Express和Node是新的对我?
答案 0 :(得分:16)
我认为你错过了你的路线,你需要定义至少一条路线,例如'/'来索引。
e.g。
app.get('/', function (req, res) {
res.render('index', {});
});
答案 1 :(得分:4)
您检查过文件夹结构吗?在我看来,Express无法找到您的根目录,该目录应该是您的默认目录下名为“site”的文件夹。根据教程:
,它应该是这样的node_modules/
.bin/
express/
mongoose/
path/
site/
css/
img/
js/
index.html
package.json
例如,在我的机器上,当我将“site”文件夹重命名为其他内容时,我开始遇到与您相同的错误。因此,我建议您检查一下“site”文件夹中的index.html页面,该文件夹位于与server.js文件相同的路径中。
希望有所帮助!
答案 2 :(得分:2)
就像leonardocsouza一样,我遇到了同样的问题。为了澄清一点,这就是我运行node server.js
node_modules/
app/
index.html
server.js
打印出__dirname
路径后,我发现__dirname
路径是我的服务器运行的地方(app/
)。
所以,你的问题的答案是:
如果您的server.js
文件与您尝试呈现的文件位于同一文件夹中,则
app.use( express.static( path.join( application_root, 'site') ) );
实际应该是
app.use(express.static(application_root));
如果你有一个像这样的文件夹树,你唯一想要使用原始语法的那一次:
app/
index.html
node_modules
server.js
其中index.html
位于app/
目录中,而server.js
位于根目录中(即与app/
目录相同的级别)。
旁注:调用path
实用程序的Intead,您可以使用语法application_root + 'site'
加入路径。
总的来说,您的代码可以看起来像:
// Module dependencies.
var application_root = __dirname,
express = require( 'express' ), //Web framework
mongoose = require( 'mongoose' ); //MongoDB integration
//Create server
var app = express();
// Configure server
app.configure( function() {
//Don't change anything here...
//Where to serve static content
app.use( express.static( application_root ) );
//Nothing changes here either...
});
//Start server --- No changes made here
var port = 5000;
app.listen( port, function() {
console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );
});
答案 3 :(得分:0)
如果遇到此错误,可能是因为您没有为获取定义的路由。
例如:
const express = require('express');
const app = express();
app.get('/people', function (req, res) {
res.send('hello');
})
app.listen(3000);
http://http://localhost:3000/people --> this works
http://http://localhost:3000 --> this will output Cannot GET / message.