当前位置: 首页 > 面试题库 >

相对于Node.JS中的应用程序根目录引用文件的正确方法

红鸿运
2023-03-14
问题内容

我有一个在AWS EC2的Linux上运行的Node.JS应用程序,该应用程序使用fs模块读取HTML模板文件。这是应用程序的当前结构:

/server.js
/templates/my-template.html
/services/template-reading-service.js

HTML模板将始终位于该位置,但是,模板读取服务可能会移动到其他位置(更深的子目录等)。在模板读取服务中,我使用fs.readFileSync()加载文件,就像这样:

var templateContent = fs.readFileSync('./templates/my-template.html', 'utf8');

这将引发以下错误:

Error: ENOENT, no such file or directory './templates/my-template.html'

我假设这是因为路径“ ./”解析为“ / services /”目录,而不是应用程序根目录。我也尝试过将路径更改为“ ../templates/my-
template.html”,但这确实可行,但是它似乎很脆弱,因为我想这只是相对于“上一个目录”而言。如果我将模板读取服务移至更深的子目录,则该路径将中断。

那么,相对于应用程序的根目录引用文件的正确方法是什么?


问题答案:

尝试

var templateContent = fs.readFileSync(path.join(__dirname, '../templates') + '/my-template.html', 'utf8');


 类似资料:
  • 问题内容: 有没有比确定正在运行的node.js进程的根目录更好的方法?类似于,但适用于Node.js。我正在寻找尽可能可预测和可靠的东西。 问题答案: 有几种方法可以解决此问题,每种方法各有利弊: require.main.filename 从http://nodejs.org/api/modules.html: 直接从Node运行文件时,将其设置为。这意味着您可以通过测试确定文件是否已经直接运

  • 问题内容: 我的Flask应用程序结构如下所示 当我运行时,它将在处启动服务器。在我,我尝试打开该文件作为 它给出了错误 如何访问此文件? 问题答案: 认为问题出在你/的道路上。删除,/因为与处于同一级别。 我建议将水平设置为或许多Flask用户喜欢使用,但我不喜欢。 如果这是你要设置的方式,请尝试以下操作: 现在,你可以轻松执行以下操作: 根据需要调整路径和级别。

  • 本文向大家介绍在JavaScript中正确引用bind方法的应用,包括了在JavaScript中正确引用bind方法的应用的使用技巧和注意事项,需要的朋友参考一下  在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用,就拿最常见的console.log("info…")来说,避免书写冗长的console,直接用log("info…")代替,不假思索的会想到如下语法

  • 我开始学习JSP和Tomcat容器,并且知道目录必须如何存储,但有几件事让我感到困惑: 如果我们只使用web app,为什么我们需要这里的其余文件夹?(突出显示为蓝色)。我可以只是删除他们和加载我的项目“web”作为根?

  • 上次我在考虑如何在我们的应用程序中正确使用记录器。例如,我有一个控制器,它返回一个用户流,但在日志中,我看到“Fetch users”日志是由另一个线程记录的,而不是处理管道上的线程,但这是一个好的方法吗? 在这种情况下,使用了两个线程,从我的角度来看,这不是一个好的选择,但我找不到在反应应用程序中使用记录器的好做法。我认为下面的方法更好,因为分配内存是来自处理线程,而不是来自spring web

  • 问题内容: persistence.xml看起来像这样: 这是一个Web项目,因此部署单元是一个war文件。我尝试引用的jar文件位于 WEB-INF / lib / 文件夹中, persistence.xml 位于 WEB-INF / classes / META-INF 文件夹中。部署时,它只是告诉我 “警告:无法找到文件(忽略):file:… / .. / lib / app-service