【问题标题】:Problems with expressjs on NodesterNodester 上 expressjs 的问题
【发布时间】:2012-06-30 20:35:49
【问题描述】:

我刚开始使用 nodester 作为 nodejs 应用程序 paas,但遇到了一些问题。

让我澄清一下,我的本地机器运行节点 0.7,而在 nodester 上我使用的是节点 0.6.17

以下代码在我的 server.js 文件中,由平台执行:

app.get('/static', function(req,res) {
  res.sendfile('views/myFile.html',function(error){
    if(err)
      res.send('An error has occurred');
  });
});
app.get('/', function(req,res){
  res.render('index.jade');
});

剩下的代码是Express.js生成的代码 特别是配置是

app.set('views', __dirname + '/views');
  app.use(express.static(__dirname + '/public'));
  app.set('view engine', 'jade');
  app.set('view options', {layout: 'layout.jade'}); //added by me but with no results

如果我在本地机器上运行此配置,一切正常,'/' 路由,完美地将 index.jade 视图发送到正确的 layout.jade 视图中。 '/static' 路由发送 index.html 没有问题。

但如果我在 nodester 上运行此代码(在编辑 package.json 并要求节点 0.6 之后) 我得到不同的结果:

  1. '/' 路由不会渲染 layout.jade,而只会渲染 index.jade。这很奇怪,因为我刚刚编辑了由 express 生成的 layout.jade 文件!

  2. '/static' 路由只是抛出一个错误,我可以通过回调来捕获它。所以没有发送html文件。

我哪里错了?我可能遗漏了什么……有什么想法吗?

【问题讨论】:

    标签: node.js express nodester


    【解决方案1】:

    回答 2

    在 nodester 中,节点进程可能从不同的目录运行,从而使 process.cwd() 不等于您应用的根目录。

    要解决此问题,请使用以下代码

    app.get('/static', function(req,res) {
      res.sendfile(__dirname + '/views/myFile.html',function(error){
        if(err)
          res.send('An error has occurred');
      });
    });
    

    回答 1

    与上述类似的问题。所以,请检查并告诉我。

    【讨论】:

    • 谢谢伙计,您的解决方案适用于静态文件。我没有在nodester上尝试这个,因为它在我的本地机器上失败了,但正如你所说,节点进程在nodester的其他地方......它是如此明显。我去检查一下布局问题并在这里报告
    • 我无法让 '/' 正确运行,我编辑了我的代码,替换为以下行: res.render('index.jade',{layout:__dirname+'/views /layout.jade'});有什么想法吗?
    • 您使用的是哪个快递版本?如果是 3.0.0*,则布局不起作用。您必须在 index.jade 中有一行 extends layout 才能呈现 layout.jade
    • 这很奇怪,但我无法登录 nodester 的管理面板,无论如何我从本地安装上传了 package.json,上面写着“express”:“2.5.8”。我会等到管理面板重新上线
    猜你喜欢
    • 2011-11-07
    • 2012-03-15
    • 2020-08-19
    • 2014-11-15
    • 1970-01-01
    • 2018-01-23
    • 2011-10-06
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多