节点需要绝对路径

用户名

我有一个看起来像这样的目录:

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

我要我的user.js文件要求config.json目前,我正在使用,require('/config')但这不起作用。我究竟做错了什么?我想避免使用require('../config')

欧文

简单的答案是您没有做错任何事情。根据一些研究,require函数将查找以下内容之一:

  • 诸如fs之类的核心模块
  • 您在require调用中指定的相对文件路径
  • 目录将在调用require函数的文件的父目录中某处的node_modules文件夹中搜索适当命名的模块。

参见: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文件夹中。

最后,请记住,您试图做的事情与您正在使用的程序的原则背道而驰。我认为这是一种情况,您可以通过使用Node的粒度并按设计意图使用相对文件路径来最终使您的生活(和合作者的生活)更加轻松。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章