NodeJS:通过节点提供的HTML文档缺少所有引用

时间:2016-01-20 20:10:12

标签: javascript node.js dom nginx href

我是一位经验丰富的MEAN堆栈开发人员,我正在对我们公司使用的API进行nodeJS重写,这是使用NGINX在Perl中编写的。我通过简单的节点路由服务登录页面:

app.get('/', function (req, res) {
    res.render('/var/www/html/login.html');
});

通过Perl提供此页面时,所有样式表都能正确呈现。但是,当我通过节点提供此文档时,我所有的' hrefs'抛出404:未找到。我的应用程序使用EJS引擎。

我试图引用的文件的绝对路径:

Login: /var/www/html/login.html
Bootstrap Darkly: /var/www/html/bootstrap/css/bootstrap.darkly.css
Jquery: /var/www/html/js/jquery.js

我在login.html中测试了以下四个href位置:

<link href="bootstrap/css/bootstrap.darkly.css" rel="stylesheet" />
<link href="/bootstrap/css/bootstrap.darkly.css" rel="stylesheet" /> 
<link href="../bootstrap/css/bootstrap.darkly.css" rel="stylesheet" />
<link href="../../bootstrap/css/bootstrap.darkly.css" rel="stylesheet" />

我可以提供社区认为有用的任何其他信息。

任何人都知道我做错了什么?这是在Ubuntu 15.04服务器版本的VM上运行。

此外,这可能与this question有某种关联。

这是我的完整app.js:

var express = require('express');
var http = require('http');
var path = require('path');
var fs = require('fs');
var app = express();
var expressJwt = require('express-jwt');
var jwt = require('jsonwebtoken');
var json = require('json');
var bodyParser = require('body-parser');
var morgan = require('morgan');

process.env.PATH = '/var/www/html/';
// all environments
app.set('port', process.env.PORT || 3000);
//app.set('view engine', 'html');
//app.set('views', path.join(__dirname, '../../'));

app.engine('html', require('ejs').renderFile);

app.all('*', function(req, res, next) {  
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

// development only
if ('development' == app.get('env')) {
  //app.use(express.errorHandler());
}

require('./routes/main.js')(app);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

评论建议我补充说:

app.use(express.static('/var/www/html'));

当这行被添加到app.js文件的顶部时,就在声明之后,浏览器会在http://localhost:3000下载perl脚本。在我看来,这表明在这种情况下NGINX是我的节点服务器的代理。

0 个答案:

没有答案