在“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”...这对我来说很难解释它更好(我是新手),但我认为你们比我更有经验,可能会理解我在说什么。
提前感谢您的帮助。
维托里奥
答案 0 :(得分:1)
解决:问题在于快递把手包。使用它之后"创建"方法我应该指定layoutsDir:
require('express-handlebars')
.create({
layoutsDir:path.join(__dirname, '../whateverpath/views/layouts') ,
defaultLayout: 'main'
});
完成后,问题就解决了。
感谢那些试图提供帮助的人。
再见