【问题标题】:ExpressJS, Nodester, template rendering paths?ExpressJS,Nodester,模板渲染路径?
【发布时间】:2011-11-07 17:38:57
【问题描述】:

我编写了一个简单的 expressjs 应用程序,它在本地运行良好,甚至在 no.de 上也能正常运行,但在 Nodester 上,当我访问 http://myapp.nodester.com/ 时,我得到一个 Internal Server Error 并且日志显示

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

然后通过 fs 模块,我试图查看它为什么不存在,fs.readdir('.',function(error,files){console.log(files)}) 返回了这个:

[ '.nodester',
  'app',
  'node_modules',
  'usr',
  'lib64',
  'sbin',
  'etc',
  'dev',
  'proc',
  'home',
  'bin',
  'lib',
  'root',
  '.PKGINFO',
  '.INSTALL' ]

我还发现我git pushed 的所有文件都在apps 目录中。

这是否意味着我必须告诉我 views 文件夹所在的正确路径?我怎样才能做到这一点 ? (我只知道如何告诉它以绝对路径呈现文件)。

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

    使用内置变量__dirname手动设置视图目录:

    var app = module.exports = express.createServer();
    app.configure(function(){
            ...
            app.set('views', __dirname + '/views');
            app.use(express.static(__dirname + '/public'));
    });
    

    尝试使用express 命令行工具生成应用程序骨架(如果您从 npm 安装最后一个 express 版本,则可以访问它)。它为您提供了良好的起点。

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2015-12-24
      相关资源
      最近更新 更多