如何为兄弟目录中的所需脚本提供模块依赖关系
我正在运行一个node.js脚本( foo.js
) require
位于同级目录中的助手脚本。
//foo.js:
var magic = require('../util/magic');
magic.js
使用一个npm模块express
。 但是,“程序”的主目录(包含package.json
和node_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目录移动到
util
和program
的通用父项 - 添加一个
node_modules
目录到util
- 将所需模块的参考传递给
magic.js
感谢你的帮助!
您可以提供一个相对path,而不是模块名称,因为如果您不指定path,Node.js将如何检查模块文件夹:
/util/node_modules /node_modules
既然你知道模块已经存在的位置,只需要这样做:
var express = require('../program/node_modules/express');
但是,在开发模块时,应将与模块相关的任何文件放在模块本身内。 如果您不这样做,那么在发布时不会将其与模块一起打包,并且您不便于访问包文件中指定的依赖项。