【问题标题】:nodejs fs printing view source code instead of rendering view on openshiftnodejs fs打印视图源代码而不是在openshift上渲染视图
【发布时间】:2015-02-27 20:01:23
【问题描述】:

这个应用程序在本地运行良好,并且在 openshift 上运行没有错误,但是视图没有呈现它只是打印源代码。我尝试删除并重新创建应用程序,但仍然没有成功。

这是我的 server.js 文件的一部分:

var express    = require('express');
var app        = express();
var bodyParser = require('body-parser');

var fs = require("fs");
var handlebars = require("handlebars");
var WebPageTest = require('webpagetest');

// Web Page Test - API key.
var wpt = new WebPageTest('www.webpagetest.org', '1234567890');

var router = express.Router();

app.use("/css", express.static(__dirname + '/css'));
app.use("/js", express.static(__dirname + '/js'));
app.use("/img", express.static(__dirname + '/img'));

/***** Views *****/
// Homepage.
app.get('/', function(req, res) {

  var template = fs.readFileSync("views/index.html", "utf8");

  // handlebars data, optional.
  var source = {
    message : "Homepage!"
  };

  var pageBuilder = handlebars.compile(template);
  var pageText = pageBuilder(source);
  res.writeHead(200, {"Context-Type": "text/html"});
  res.write(pageText);
  res.end();

});

/***** Start App *****/
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 5000;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';

app.listen(server_port, server_ip_address, function(){
  console.log("Listening on " + server_ip_address + ", server_port " + server_port);
});

这是 package.json 的一部分

{
  "name": "wpt",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "dependencies": {
    "body-parser": "^1.10.0",
    "express": "^4.10.6",
    "webpagetest": "^0.3.1",
    "mongoose": "^3.8.21",
    "handlebars": "^2.0.0",
    "express3-handlebars": "^0.5.2",
    "fs":"*"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },

我手动将 fs 添加到依赖项中,但似乎没有任何效果。

【问题讨论】:

  • fs 依赖是不必要的。

标签: node.js express openshift mustache fs


【解决方案1】:

使用车把 Express 视图引擎(例如 hbs)可能要容易得多。示例:

// ...

var hbs = require('hbs');

app.engine('hbs', hbs.__express);
app.engine('html', hbs.__express);
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
hbs.localsAsTemplateData(app);

app.get('/', function(req, res) {
  res.render('index.html', {
    message: 'Homepage!'
  });
});

// ...

【讨论】:

  • 谢谢,这也适用于本地,但在 openshift 上显示为空白。我做了一个测试路线 /test 和 test.html
  • 没关系,如果我提交 test.html 文件可能会有所帮助。工作,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多