我正在运行一个node.js脚本(foo.js
),require
是一个位于兄弟目录中的帮助脚本。
//foo.js:
var magic = require('../util/magic');
magic.js
使用npm模块express
。但是,“计划”的主目录(持有package.json
和node_modules
)是foo.js
所在的文件夹。
/program
/node_modules
/express
..
/foo.js
/package.json
/util
/magic.js
运行程序时, magic.js 中的语句require('express')
失败 - 无法找到该模块。
有没有办法让node.js从express
目录加载program/node_modules
模块?
我想避免以下任何一种情况:
util
和program
node_modules
目录添加到util
magic.js
感谢您的帮助!
答案 0 :(得分:2)
您可以提供相对路径而不是模块名称,因为如果您没有指定路径,这就是Node.js检查模块文件夹的方式:
/util/node_modules
/node_modules
由于您知道模块已存在的位置,所以请改为:
var express = require('../program/node_modules/express');
但是,在开发模块时,您应该将与模块相关的任何文件放在模块中。如果不这样做,它们在发布时就不会与模块一起打包,并且您无法访问包文件中指定的依赖项。