Handlebars

时间:2016-03-22 14:07:26

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

my folder structure

事情是这样的。 “app”文件夹是我的节点逻辑所在的位置,在那里你可以找到views文件夹,带有把手模板(快速把手)。

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

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似乎只是忽略了那个app文件夹..就好像我无法访问它一样。

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”...这对我来说很难解释它更好(我是新手),但我认为你们比我更有经验,可能会理解我在说什么。

提前感谢您的帮助。

维托里奥

1 个答案:

答案 0 :(得分:1)

解决:问题在于快递把手包。使用它之后"创建"方法我应该指定layoutsDir:

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

完成后,问题就解决了。

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

再见