gpt4 book ai didi

node.js - 错误 : Failed to lookup view in Express

转载 作者:IT老高 更新时间:2023-10-28 21:52:18 26 4
gpt4 key购买 nike

注意:我在帖子末尾的自动回复

我正在尝试为 nodeJS 提供更好的体验,但我真的不喜欢将所有脚本放在一个文件中。

所以,我在这里的帖子之后使用这个结构

./
config/
enviroment.js
routes.js
public/
css/
styles.css
images
views
index
index.jade
section
index.jade
layout.jade
app.js

我的文件现在是:

app.js

var express = require('express');
var app = module.exports = express.createServer();

require('./config/enviroment.js')(app, express);
require('./config/routes.js')(app);

app.listen(3000);

enviroment.js

module.exports = function(app, express) {
app.configure(function() {
app.use(express.logger());
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'jade'); //extension of views

});

//development configuration
app.configure('development', function() {
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});

//production configuration
app.configure('production', function() {
app.use(express.errorHandler());
});

};

routes.js

module.exports = function(app) {

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

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

};

layout.jade

!!! 5
html
head
link(rel='stylesheet', href='/css/style.css')
title Express + Jade
body
#main
h1 Content goes here
#container!= body

index/index.jade

h1 algoa

我得到的错误是:

Error: Failed to lookup view "index/index" at Function.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\application.js:495:17) at render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:614:9) at ServerResponse.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:638:5) at c:\xampp\htdocs\nodejs\buses\config\routes.js:4:7 at callbacks (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:177:11) at param (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:151:11) at pass (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:158:5) at Router._dispatch (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:185:4) at Object.router [as handle] (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:45:10) at next (c:\xampp\htdocs\nodejs\buses\node_modules\express\node_modules\connect\lib\proto.js:191:15)

但我真的不知道是什么问题......

我开始想是因为模块导出...

答案:我发现的唯一解决方案是更改我定义 app.set('views') 和 View 引擎的位置

我将其移至 app.js,现在运行良好。

var express = require('express');
var app = module.exports = express.createServer();


require('./config/enviroment.js')(app, express);

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

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

app.listen(3000);

我不太明白这背后的逻辑,但我想它有一个。

最佳答案

添加到@mihai 的答案:

如果您在 Windows 中,那么仅连接 __dirname' + '../public' 将导致错误的目录名称(例如:c:\dev\app\module. ./public).

改为使用 path,这将与操作系统无关:

var path = require ('path');
app.use(express.static(path.join(__dirname + '../public')));

path.join将规范化路径分隔符并返回正确的路径值。

关于node.js - 错误 : Failed to lookup view in Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com