Javascript 如何以编程方式获取npm安装全局模块的位置

Javascript 如何以编程方式获取npm安装全局模块的位置,javascript,node.js,npm,Javascript,Node.js,Npm,我想通过编程找到npm安装全局模块的文件夹。这个问题与此类似,但答案不适用于全球安装的模块:来自nodejs网站: 全局-这会将模块放入{prefix}/lib/node_模块中,并将可执行文件放入{prefix}/bin,其中{prefix}通常类似于/usr/local。它还将手册页安装在{prefix}/share/man中(如果提供的话) 要获取前缀,请输入: npm config get prefix 编辑: 要从节点执行此操作,请使用npm npm模块。类似这样的方法会奏效: va

我想通过编程找到npm安装全局模块的文件夹。这个问题与此类似,但答案不适用于全球安装的模块:

来自nodejs网站:

全局-这会将模块放入{prefix}/lib/node_模块中,并将可执行文件放入{prefix}/bin,其中{prefix}通常类似于/usr/local。它还将手册页安装在{prefix}/share/man中(如果提供的话)

要获取前缀,请输入:

npm config get prefix
编辑:

要从节点执行此操作,请使用npm npm模块。类似这样的方法会奏效:

var npm = require("npm")
var myConfigObject = {}
npm.load(myConfigObject, function (er) {
    if (er) return handleError(er)
    console.log(npm.get('prefix'));
})

如果您不想依赖npm:

const { resolve } = require('path')    
const globalPath = resolve(process.execPath, '../../lib/node_modules')
NPM的主要工作是“把东西放在你的电脑上”。他们的详细信息是什么放在哪里

由于操作系统、
.npmrc
配置和属性之间的差异,使用以下命令最容易依靠npm确定全局安装目录:

$npm root-g
你可以这样说:

const{exec}=require('child_process')
const{promisify}=require('util');
异步函数main(){
让execAsync=promisify(exec);
让{stdout:globalPath}=await-execAsync(“npm-root-g”);
console.log(globalPath);
}

或者,为了以编程方式访问npm模块,您需要在本地安装它:

$npm i npm--保存
然后可以运行以下代码:

const npm=require(“npm”)
const{promisify}=require('util');
异步函数main(){
等待承诺(npm.load)()
设globalPath=npm.root
console.log(globalPath)
}

进一步阅读

谢谢您,先生!现在,如果我只知道如何加载全局npm模块,以便从javascript而不是从命令执行中获得正确的前缀,我就准备好了!所以实际上,我的是在/node_模块中,没有lib或bin文件夹。我在windows上。npm有一个npm模块。也许这会有所帮助。另一个注意事项,看起来他们在windows上的操作方式与linux略有不同。全局模块安装在widows中的/node_模块上,而它们安装在linux.module.path.push(/node_模块)中的/lib/node_模块上。设置“prefix”属性时,这将不起作用,使全局节点_模块位于其他地方。不要认为这适用于