当前位置: 首页 > 知识库问答 >
问题:

节点需要绝对路径

鱼安然
2023-03-14

我有一个目录如下所示:

-- app/
   |- models/
      |- user.js
   |- config.json

我希望我的user.js文件需要config.json。现在我正在使用require('/config'),但这不起作用。我做错了什么?我希望避免使用require('../config')

共有1个答案

何向荣
2023-03-14

简单的答案就是你没有做错什么。根据一些研究,require函数将查找以下内容之一:

  • 核心模块,如FS
  • 在要求调用中指定的相对文件路径
  • 在node_modules文件夹中,在调用require函数的文件的父目录的某个位置,进行目录搜索,以查找适当命名的模块。

参见:http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules-.htm和:http://nodejs.org/api/modules.html#loading_from_node_modules_folders

上面的两个参考资料都引用了修改NODE_PATH环境变量的功能,但是这听起来是非常糟糕的做法,至少会使代码的可移植性降低。它甚至可能对像config.json这样的文件也不起作用,因为尽管我从来没有这样做过,但我认为更改NODE_PATH变量只会在require()查找对应于实际模块的package.json文件时发生变化。

总之,请参见:如何使node.js中的require始终相对于项目的根文件夹?如上文Piotr Kowalczuk所述。根据这篇文章,你有两个真正的选择:

  1. 使用相对文件路径。
  2. 用package.json文件将所需资源打包为真正的模块,并将其放入node_modules文件夹。

最后,请记住,您正在尝试做的事情与您正在使用的程序的主旨相违背。我认为这是一个你最终会让你的生活(和你的合作者的)更容易的例子通过遵循节点的纹理和使用相关的文件路径来实现。

 类似资料:
  • 问题内容: 我的目录结构如下: script.php inc / include1.php inc / include2.php 对象/ object1.php 对象/ object2.php soap / soap.php 现在,我在和中都使用了这些对象,可以移动它们,但是出于特定的原因,我想要这样的目录结构。当执行包含路径is 和执行它时,绝对路径有效,但是如果我想将目录移动到其他位置,则这是

  • 我想知道在不运行require的情况下,节点的require将解析到什么路径。 例如 在内部node.js将查看它的PATH,弄清楚它是一个目录、一个js文件、一个json文件等。,然后加载文件。 有没有办法在不实际加载模块的情况下只处理完整解析的路径? 我正在寻找的输出是这样的 重要的部分是. js扩展名,因为节点必须完全解析路径。 注意:无法解决此问题。如果some_module实际上是一个包

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 位置路径指定XML文档中节点的位置。路径可以是绝对路径或相对路径。 如果位置路径以根节点或开头,则它是绝对路径。 以下是使用绝对路径定位元素的示例中的一小部分。 - 选择类根节点中的节点。 - 在类根节点中选择节点的名称。 示例 在这个例子中,我们创建了一个示例XML文档students.xml,及其样式表文档students.xsl,它使用了XPath表达式。 以下是使用的示例XML,文件:st

  • 问题内容: 如果我做一个 然后我收到服务器控制台警告 表达已弃用:改为使用 但它在客户端工作正常。 但是当我将其更改为 我得到一个错误 TypeError:路径必须是绝对路径或将根目录指定为 并且不呈现。 我无法弄清楚绝对路径是什么。我的目录与处于同一级别。我正在使用。我也宣布 添加我的目录结构: 在此处指定的绝对路径是什么? 我正在使用Express4.x。 问题答案: 该中间件是独立的,所以用

  • 主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字