如何为兄弟目录中的所需脚本提供模块依赖关系

我正在运行一个node.js脚本( foo.jsrequire位于同级目录中的助手脚本。

//foo.js:
var magic = require('../util/magic');

magic.js使用一个npm模块express 。 但是,“程序”的主目录(包含package.jsonnode_modules )是node_modules所在的文件夹。

 /program /node_modules /express .. /foo.js /package.json /util /magic.js 

运行程序时,语句require('express')magic.js中失败 – 找不到该模块。

有没有办法让node.js从program/node_modules目录加载express模块?

我想避免以下任何一项:

  • 将node_modules目录移动到utilprogram的通用父项
  • 添加一个node_modules目录到util
  • 将所需模块的参考传递给magic.js

感谢你的帮助!

您可以提供一个相对path,而不是模块名称,因为如果您不指定path,Node.js将如何检查模块文件夹:

 /util/node_modules /node_modules 

既然你知道模块已经存在的位置,只需要这样做:

 var express = require('../program/node_modules/express'); 

但是,在开发模块时,应将与模块相关的任何文件放在模块本身内。 如果您不这样做,那么在发布时不会将其与模块一起打包,并且您不便于访问包文件中指定的依赖项。