【问题标题】:Express.JS path issue with handlebars车把的 Express.JS 路径问题
【发布时间】:2016-07-09 11:20:06
【问题描述】:

事情是这样的。 “app”文件夹是我的节点逻辑所在的位置,在那里您可以找到带有车把模板(express-handlebars)的视图文件夹。

在“config”文件夹中,有一个 express.js 文件,其中实际上需要 express 包以及我设置应用引擎和变量的位置:

line 1: app.engine('handlebars', handlebars.engine);
line 2: app.set('views', path.join(__dirname, '../app/views');
line 3: app.set('view engine', 'handlebars');

server.js 文件需要 config 文件夹中的 express.js 文件,仅此而已。

如果我将“views”文件夹放在根目录下(不包括第 2 行),一切正常,但是,如果我使用第 2 行和图片中显示的文件夹结构,我总是会收到错误 ENOENT:"没有这样的文件或目录.."

当我试图通知“views”文件夹的正确路径时,我在第 2 行尝试使用什么格式并不重要,错误消息总是说找不到文件并且显示的 URL 总是错过“app”文件夹(它显示了我尝试的每条路径,但它使应用程序部分消失)。我做什么并不重要,但 Node 似乎只是忽略了该应用程序文件夹.. 就好像我无法访问它一样。

Ex:
1) path.join(__dirname, "../app/views"); > ENOENT "C:\root\views\layouts\main.handlebars".
2) path.join(__dirname, "../xapp/views"); > Failed lookup view "C:\root\xapp\views"

Note how the "app" portion of the first option disapears from the url !!

我假设这是一个“路径”问题,我无法理解发生了什么。有人可以帮我解决这个问题吗?

如果有人知道我在哪里可以读到这个“路径事物”背后的逻辑,我会很感激的。例如:当我在第 2 行仅使用“__dirname”时,我收到的错误消息是该节点“无法在视图目录中查找视图“文件名”:“path_string/config”......这对我来说有点难以解释它更好(我是新手),但我想你们,比我更有经验,可能明白我在说什么。

提前感谢您的帮助。

维托里奥

【问题讨论】:

  • app.set('views', path.join(__dirname, '../app/views'); 这样的东西有用吗?
  • 谢谢史蒂夫,但不,它没有。我已将“app”文件夹的名称更改为“mapp”。会发生这种情况:A) path.join(__dirname, '../app/views) > 无法查找视图...'C:\web_app\app\views' B) path.join(__dirname, '.. /mapp/views) > ENOENT ... 'C:\web_app\views\layouts\main.handlebars'.. 请注意,在选项 B 上,mapp 目录未显示在错误消息中:它应该是 'C:\ web_app\mapp\views\layouts\main.handlebars',但它显示的是 'C:\web_app\views\layouts\main.handlebars'。 > 地图消失了。
  • 不应该表达在node_modules中?
  • 它是.. 但这没有任何区别,因为如果我在根文件夹上创建“views”文件夹,一切都会正常工作。仅当“views”文件夹位于“app”文件夹时才会出现此问题。

标签: javascript node.js express path handlebars.js


【解决方案1】:

已解决:问题出在 express-handlebars 包上。使用它的“创建”方法后,我应该指定 layoutsDir:

require('express-handlebars')
      .create({
               layoutsDir:path.join(__dirname, '../whateverpath/views/layouts') , 
               defaultLayout: 'main'
             });

做了之后,问题就解决了。

感谢那些试图提供帮助的人。

再见

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多