当前位置: 首页 > 面试题库 >

错误:无法在Express中查找视图

侯令雪
2023-03-14
问题内容

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

我正在尝试更好地体验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

我得到的错误是:

错误:无法在渲染(c:\ xampp \ htdocs)中在Function.render(c:\ xampp \ htdocs \ nodejs \
buses \ node_modules \ express \ lib \
application.js:495:17)上查找视图“索引/索引”位于ServerResponse.render(c:\ xampp \ htdocs
\ nodejs \ buses \ node_modules \ express \ lib \ response.js:638:5)处的\
nodejs \ buses \ node_modules \ express \ lib \ response.js:614:9) c:\ xampp
\ htdocs \ nodejs \ buses \ config \ routes.js:4:7在回调(c:\ xampp \ htdocs \
nodejs \ buses \ node_modules \ express \ lib \ router \
index.js:177:11)在参数(c:\ xampp \ htdocs \ nodejs \ buses \ node_modules \
express \ lib \下在param(c:\ xampp \ htdocs \ nodejs \ buses \ node_modules \
express \ lib \ router \ index.js:151:11)在Object.router的Router._dispatch(c:\
xampp \ htdocs \ nodejs \ buses \ node_modules \ express \ lib \ router \
index.js:185:4)处的router \ index.js:158:5)[作为句柄] (C:\ xampp \ htdocs \ nodejs
\ buses \ node_modules \ express \ lib \ router \ index.js:45:10)在下一个(c:\
xampp \ htdocs \ nodejs \ buses \ node_modules \ express \ node_modules \
connect \ lib \ proto .js:191:15)

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

我开始思考是因为模块导出…

答:很 远,我发现的独特解决方案是更改我定义的app.set(’views’)和views引擎的位置

我将其移至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);

我不是很了解这背后的逻辑,但我认为它有一个逻辑。


问题答案:

npm install express@2.5.9 安装旧版本(如果有帮助)。

我知道在3.x中,视图布局机制已删除,但这可能不是您的问题。也替换express.createServer()express()

更新:

这是来自environment.js的__dirname,
它应该是:

app.use(express.static(__dirname + '../public'));


 类似资料:
  • 注意:我在帖子末尾的自动回答 我正在尝试更好地体验nodeJS,我真的不想把所有脚本都放在一个文件中。 所以,在这里的帖子后面,我使用这个结构 我的文件现在是: app.js 环境。js公司 路线。js公司 布局玉 索引/索引。玉 我得到的错误是: 错误:无法在函数处查找视图“索引/索引”。在ServerResponse的render(c:\xampp\htdocs\nodejs\bus\node

  • 我正在开发我的应用程序,它在几个小时前工作。但是现在当我启动它时,我得到以下错误。 在中没有目录,但在my中有。它包含

  • 我在开往赫洛库时不断收到此错误。构建过程成功,但后来我得到这个错误。无法弄清楚问题所在,路径不应该是src /服务器/视图吗?一切都在本地工作。 我使用webpack tu bundle我的服务器端代码,我使用html-webpack插件将我的index.ejs模板从视图文件夹注入到webpack bundle。 网络包.配置.服务器. js 产品服务器.js 文件夹结构 如你所见,我有index

  • 问题内容: 我正在使用Express和EJS来提供页面。我正在为用户界面使用Bootstrap,尤其是导航栏。 我想在当前页面的项目中添加一个类,以显示当前页面。但是,我找不到如何从呈现页面的EJS代码中获取URL。 我发现了两种解决方法:我使用了将页面名称作为路由的参数传递的方法-这是不可扩展的,可能会导致问题。 另一种方法是在客户端使用jQuery 在页面准备就绪时将类添加到项目中-但这意味着

  • 我是js/handlebars的新手,我无法用VS代码显示来自我的home.hbs文件的图像。当我运行服务器时,我得到的是: 这是我的服务器代码: 我的“home.hbs”代码: get“错误特别声明 无法获取/public/img/logo.png 这是我所有的信息,任何帮助将非常感谢。

  • 有人知道这是什么意思吗?当我点击模拟器上的“运行”按钮时,我收到了这条消息。 可抛出:无法在SDK中找到adb 我运行的是最新版本< code>0.8.14