Node.js 如何在nodejs中使用路径别名?

Node.js 如何在nodejs中使用路径别名?,node.js,root,resolve,Node.js,Root,Resolve,假设我有以下代码: var mod1 = require('../../../../ok/mod1'); var mod2 = require('../../../info/mod2'); 它不像上面那样编码,我想知道是否有一种方法可以像在nodejs中一样配置根解析器 据我所知,NODE\u路径可以用来替换NODE\u模块的根,但这不是我想要的。我想让解析器按顺序解析多个文件夹。最好的方法是使用全局(配置)容器。 在大多数情况下,应用程序中都会有一个配置文件。在此配置中,您可以添加一个属性,

假设我有以下代码:

var mod1 = require('../../../../ok/mod1');
var mod2 = require('../../../info/mod2');
它不像上面那样编码,我想知道是否有一种方法可以像在nodejs中一样配置根解析器


据我所知,
NODE\u路径
可以用来替换
NODE\u模块的根
,但这不是我想要的。我想让解析器按顺序解析多个文件夹。

最好的方法是使用全局(配置)容器。 在大多数情况下,应用程序中都会有一个配置文件。在此配置中,您可以添加一个属性,该属性将是包含文件/文件夹的所有绝对路径的对象。 由于配置文件在应用程序启动时使用,因此只需执行以下操作:

var config = require("./config.js");
//config = {... , path: {"someModule": "/absolute/path/to", "someModule2": "/absolute/path/to"...}}
global.CONFIG_CONTAINER = config
稍后在应用程序中,您可以使用

var myModule = require(CONFIG_CONTAINER.path.someModule)
// + concat if you are looking for a file
如果您有一些复杂的路径,并且需要一个更具动态性的系统,那么您可以始终在配置中实现一个函数来为您构建路径。(config.makePath=function(){…})
简而言之,这应该会解决问题。

有一个名为npm的软件包,可以满足您的需求。

更新了2021年的答案

已添加到:v14.6.0、v12.19.0

这允许您将以下内容添加到package.json

"imports": {
  "#ok/*": "./some-path/ok/*"
  "#info/*": "./some-other-path/info/*"
},
在你的.js中

import mod1 from '#ok/mod1';
import mod2 from '#info/mod2';

我不能用这种方法。我是前端开发人员,我使用
webpack
作为devtool来编译用commonjs编写的源代码。一旦我想编写单元测试,我发现模块无法正确加载,因为我在
require
中使用的路径是由解析的,是否可以使用此包保留路径intellisense?()注意这个包有一些问题。它会清除整个存储库。显然,这只发生在少数用户身上。没有解决数据丢失的方法。请确保在使用此模块之前提交所有更改