无法在express.js中的文件夹之间进行链接

时间:2017-07-19 09:40:49

标签: javascript node.js express

我对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移动到静态然后它工作正常,但是我更喜欢上面的文件结构,无论如何我能做到这一点吗?谢谢。

2 个答案:

答案 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