当前位置: 首页 > 知识库问答 >
问题:

错误:在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);

环境。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());
    });

};

路线。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');
    });

};

布局玉

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

索引/索引。玉

h1 algoa

我得到的错误是:

错误:无法在函数处查找视图“索引/索引”。在ServerResponse的render(c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\application.js:495:17)中渲染(c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\response.js:614:9)。在c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\response.js:638:5中呈现(c:\xampp\htdocs\nodejs\bus\config\routes)。js:4:7在pass(c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\router\index.js:177:11)在pass(c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\router\index.js:151:11)在pass(c:\xampp\htdocs\nodejs\nodejs\node\u modules\express\lib\router\index.js:158:5)的回调中_在对象上调度(c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\router\index.js:185:4)。路由器[作为句柄](c:\xampp\htdocs\nodejs\bus\node\u modules\express\lib\router\index.js:45:10)位于下一个(c:\xampp\htdocs\nodejs\bus\node\u modules\express\node\u modules\connect\lib\proto.js:191:15)

但我真的不知道问题出在哪里。。。

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

答:我找到的唯一解决方案是更改我定义的应用程序的位置。设置(“视图”)和视图引擎

我将其移动到应用程序。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);

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

共有3个答案

姜磊
2023-03-14

通过在app中添加以下代码可以解决此问题。js文件

app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', __dirname);

app.get('/', function(req, res){
    res.render("index");
});
柯子琪
2023-03-14

npm installexpress@2.5.9安装以前的版本,如果有帮助的话。

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

这是环境中的\uu目录名。应该是:

app.use(express.static(__dirname + '../public'));
佟英武
2023-03-14

对@mihai的回答补充:

如果您在Windows中,则只需连接目录名“”/public将导致错误的目录名(例如:c:\dev\app\module../public)。

相反,请使用路径,无论操作系统如何,路径都可以工作:

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

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

 类似资料:
  • 问题内容: 注意 :我在帖子末尾自动回答 我正在尝试更好地体验nodeJS,我真的不喜欢将所有脚本都放在一个文件中。 所以,在这里发表文章之后,我使用这种结构 我的文件现在是: app.js enviroment.js routes.js layout.jade index / index.jade 我得到的错误是: 错误:无法在渲染(c:\ xampp \ htdocs)中在Function.r

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

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

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

  • 问题内容: 我有一个活动,其中包含一个片段,在该片段中有一个按钮,当单击它时,会弹出一个对话框。 在此对话框中,有一个Viewpager,其中包含一些要显示的片段。 这是代码和错误,请您花宝贵的时间告诉我我哪里错了。非常感谢您的帮助。 MainActivity.class MyFragment.class PagerDialog.class 这是dialog.xml: 这是错误 问题答案: 我找到

  • 我正在尝试使用spark sql运行一个基本的java程序 如果有人能给我指出一些在斯巴克-sql(斯巴克-2.1.1)上可以阅读的好材料,那也太好了。我计划使用火花来实现ETL,连接到MySQL和其他数据源。 异常在线程"main"org.apache.spark.sql.分析异常:未找到表或视图:;第1行pos 21;