繁体   English   中英

是否可以在没有相对路径的情况下从项目目录之外要求模块?

[英]Is it possible to require modules from outside of your project directory without relative paths?

我正在尝试构建一个本地 JS 模块库以在 Node 项目中使用。

如果一个新项目位于/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')这样就可以了,但这很笨拙,如果文件移动,则必须更新相对路径。

我已经尝试过requireFromapp-module-path ,但没有运气,因为它们是相对于项目根目录的。

关于如何从项目目录外部获取文件的任何想法?

提前致谢!

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');

我多次遇到同样的问题。 这可以通过使用basetag npm 包来解决。 它本身不一定是必需的,仅当它在node_modules内创建一个指向您的基本路径的符号链接时才安装。

const localFile = require('$/local/file')
// instead of
const localFile = require('../../local/file')

使用$/...前缀将始终引用与您的应用程序根目录相关的文件。

免责声明:我创建了basetag来解决这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM