【发布时间】: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