我对node.js和express.js很新,所以我觉得我的语法可能有问题,我有以下node.js代码:
var express = require('express');
var path = require('path');
var app = express();
app.set('port', process.env.PORT);
app.use(express.static(path.join(__dirname, 'static')));
app.get('/', function(req,res){
res.render("/public/index")
});
app.get('/secure', function(req,res){
res.render("/secure/index")
});
var server = app.listen(app.get('port'), function(){
var port = server.address().port;
});
这使我可以完全正常地访问安全页面,但是每当尝试访问公共页面时页面都会抛出“内部服务器错误”,为什么会这样?我的文件结构是
static
-public
--index.html
-secure
--index.html
如果我将公共index.html移动到静态然后它工作正常,但是我更喜欢上面的文件结构,无论如何我能做到这一点吗?谢谢。
答案 0 :(得分:0)
我必须选择:
app.use(express.static(path.join(__dirname, 'static')));
app.get('/', function(req,res){
res.render("public/index")
});
使用你的目录结构。
答案 1 :(得分:0)
当您在UITextField
处提出请求时,Express会在yourdomain:yourport/
处理请求,并发现处理程序为app.get("/", ..)
。因此,它会返回错误,因为此函数需要在res.render
之上定义view engine。
由于提供的文件是静态html文件,因此您可以删除app.get()
中间件。您已拥有static handling middleware app.get()
app.use(express.static(path.join(__dirname, 'static')));
因此,要获取var express = require('express');
var path = require('path');
var app = express();
app.set('port', process.env.PORT);
app.use(express.static(path.join(__dirname, 'static')));
var server = app.listen(app.get('port'), function() {
var port = server.address().port;
});
页面,只需在public
处提出请求即可。同时,安全页面位于yourdomain:yourport/public
。