node server.js - 无法获取/

时间:2017-01-04 09:45:36

标签: javascript html css angularjs node.js

我目前正在开发一个项目,该项目是一个使用angular来动态更改DOM元素的网页。在项目中是一个公共文件夹,其中包含所有HTML,CSS,JavaScript和JSON对象。项目必须分发,所以我使用node从localhost运行。这是我的server.js代码:

var express = require('express');
var app = express();
var path = require('path');

app.get('/', function(req,res){
   res.sendFile(path.join(__dirname + '/public')); 
});

app.listen(8080, function(){
    console.log((new Date()) + " Server is listening on port 8080");
});   

当我前往localhost:8080时,它只是说无法获取/。我哪里错了?

3 个答案:

答案 0 :(得分:3)

使用express提供静态文件的正确方法如下:

//Look for statics first
app.use(express.static(path.join(__dirname, 'public')));
//Return the index for any other GET request
app.get('/*', function (req, res) {
    res.sendFile('index.html', {root: path.join(__dirname, 'public')});
});

编辑:在旁注中,值得一提的是app.get应该是在节点中声明的最后路由,因此如果您希望API端点公开,请在上面(之前)声明它们最后app.get

答案 1 :(得分:0)

关注用户Muli的回答,所有文件现在都正确提供。代码在这里:

var express = require('express');
var app = express();
var path = require('path');

app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req,res){
   res.sendFile('index.html', {root: path.join(__dirname, './public')}) 
});

app.listen(8080, function(){
    console.log((new Date()) + " Server is listening on port 8080");
});

答案 2 :(得分:-1)

您忘记指向要显示的实际html文件。如果您的公共目录中有index.html,只需指向' /public/index.html' 。这是有效的(在这里测试)。