我的项目有很多文件夹,我经常以下列方式在node.js中加载我自己的模块:
var request = require("request"),
config = require("../../../modules/config"),
urls = require("../../../modules/urls");
我有时会移动文件夹并改变路径,因此我需要手动调整../
部分。
我不想将我的模块移动到node_modules文件夹中,但我想以下列方式加载模块:
var request = require("request"),
config = require("config"),
urls = require("urls");
或
var request = require("request"),
config = require("modules/config"),
urls = require("modules/urls");
我有什么选择?
答案 0 :(得分:1)
新答案:
毕竟,相对路径似乎是最简单的选择,它允许您从任何位置运行脚本。
var config = require("../../config");
旧回答:
我发现虽然不理想,但也有可能使用process.cwd()
。
var request = require("request"),
config = require(process.cwd() + "/modules/config");
或者,如果process.cwd()设置为主js文件中的全局变量
global.cwd = process.cwd();
然后
var request = require("request"),
config = require(global.cwd + "/modules/config"),
urls = require(global.cwd + "/modules/urls");
答案 1 :(得分:0)
您可以根据某些条件尝试执行以下操作
modules
并使用global.basepath
来构造文件路径并要求它。您也可以在应用程序的主脚本中需要它们之后注入模块变量。 path.join
main.js
var config = require('modules/config.js')(_,mongoose,app);
modules/config.js
module.exports=function(_,mongoose,app){
return function(){
// _,mongoose,app
this.loadConfigVariable..
}
}
还有express
使用的模块,例如express
,后者又有自己的依赖关系。答案 2 :(得分:0)
您可以在node_modules
中添加一个符号链接,指向您的模块所在的位置。
例如,添加名为" my_modules",引用' ../ foo / bar / my_modules'的符号链接。然后,您的要求将如下所示
var config = require('my_modules/config');
var urls = require('my_modules/urls');