我目前正在开发一个项目,该项目是一个使用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时,它只是说无法获取/。我哪里错了?
答案 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' 。这是有效的(在这里测试)。