0

根据 ExpressJS应用程序设置文档,您应该可以设置views为视图引擎的目录。我正在经历我认为可能是错误的事情;viewsexpress不是在目录中查找,而是在目录中查找static。显然它失败了,因为它不存在。我已经通过将视图移动到静态目录来确认这一点,并且错误消失了。

您可以通过克隆此 Cloud9 项目来查看此错误。我无法在 Cloud9 之外确认这个错误,(我没有可用的 linux 机器)。

目录结构简单

项目

|-client
  |-assets
  |-views
    |-index.html
|-server.js

这是服务器配置

var viewDir = __dirname + '/client/views/';
var assetDir = __dirname + '/client/assets/';

//Configure
app.configure(function() {
    app.set('views', viewDir);
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express['static'](assetDir));
    app.use(app.router);
});

app.get('/', function(req, res){        
    res.render('index');
});
4

2 回答 2

4

您需要通过设置引擎告诉它如何渲染。

比如回声:

app.engine('.html', function (file, options, next) {
  fs.readFile(file, function (err, data) {
    if (err) {
      next(err);
    } else {
      next(null, data.toString());
    }
  });
});

如果你想让它担任主席,你还需要把它放在app.get('/' . . .前面。app.use(express.static

你可以在这里试试:http ://runnable.com/UWTRSNJq0z5OAADk

于 2013-04-10T02:52:05.403 回答
2

Html 文件是静态文件,而视图中的文件必须由您的模板引擎(如 Jade 或 ejs)呈现。如果您想呈现 html 文件,请检查这些问题。

  1. 渲染基本的 HTML 视图?
  2. 在没有模板引擎的情况下使用 express

模板引擎动态呈现视图。如果您只有静态页面,那么您将不需要它。但是,如果您有动态内容,则必须使用模板。

于 2013-04-10T05:18:54.910 回答