Javascript 是否可以要求项目目录之外的模块没有相对路径?
我正在尝试构建一个本地JS模块库,用于节点项目 如果一个新项目位于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')这
/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
扩展名-我更新了我的答案