Javascript 是否可以要求项目目录之外的模块没有相对路径?

Javascript 是否可以要求项目目录之外的模块没有相对路径?,javascript,node.js,gulp,require,Javascript,Node.js,Gulp,Require,我正在尝试构建一个本地JS模块库,用于节点项目 如果一个新项目位于/Users/me/projects/path/to/new/project/中,并且我的库文件位于/Users/me/projects/library/*.js中,是否有方法不使用相对路径访问这些文件 在/Users/me/projects/path/to/new/project/app.js中,您可以这样要求foo.js: var foo=require('../../../../../../../library/foo')这

我正在尝试构建一个本地JS模块库,用于节点项目

如果一个新项目位于
/Users/me/projects/path/to/new/project/
中,并且我的库文件位于
/Users/me/projects/library/*.js
中,是否有方法不使用相对路径访问这些文件

/Users/me/projects/path/to/new/project/app.js
中,您可以这样要求foo.js:

var foo=require('../../../../../../../library/foo')
这将起作用,但这很麻烦,如果文件移动,则必须更新相对路径

我已经尝试过了,但没有运气,因为它们与项目根相关

关于如何从项目目录外部获取文件,有什么想法吗

提前谢谢

var librarypath = '/Users/me/projects/library/';
// or if you prefer...
// var librarypath = '../../../../../library/';
var foo = require(librarypath + 'foo.js');
。。。或者再打扮一点

function requirelib(lib){ return require('/Users/me/projects/library/'+lib+'.js'); }
var foo = requirelib('foo');
var bar = requirelib('bar');

我有过很多次同样的问题。这可以通过使用npm包来解决。它本身无需安装,只需在
节点模块
内创建一个符号链接到基本路径时安装即可

const localFile = require('$/local/file')
// instead of
const localFile = require('../../local/file')
使用
$/…
前缀将始终引用相对于应用程序根目录的文件


“是否可以要求项目目录之外的模块没有相对路径?”Billy Moon的回答是正确的。尝试在requirelib函数中添加日志语句,以查看正在解析的路径。app-module-path可以采用绝对路径。您是否尝试了
require('app-module-path')。addPath('/Users/me/projects/library')
谢谢您,但这返回了一个
未捕获的错误:找不到模块
,路径是正确的可能您也需要
.js
扩展名-我更新了我的答案