Javascript 如何知道是调用了全局模块还是本地模块?
通过在执行Javascript 如何知道是调用了全局模块还是本地模块?,javascript,node.js,mocha.js,node-modules,Javascript,Node.js,Mocha.js,Node Modules,通过在执行npm安装时添加-g,可以在本地级别或全局级别安装节点模块 如果一个模块(例如mocha)在本地和全局安装,当我需要(“mocha”)时,将加载哪个模块 我如何知道现在节点的执行环境中正在加载哪一个呢?如果所有其他操作都失败,您可以使用: $ export NODE_DEBUG=module 然后运行您的命令。这将为您提供加载的所有模块的详细日志以及它们的来源 如果只需要一个命令,可以运行: $ NODE_DEBUG=module <command> $NODE\u D
npm安装时添加-g
,可以在本地级别或全局级别安装节点模块
如果一个模块(例如mocha
)在本地和全局安装,当我需要(“mocha”)时,将加载哪个模块代码>
我如何知道现在节点的执行环境中正在加载哪一个呢?如果所有其他操作都失败,您可以使用:
$ export NODE_DEBUG=module
然后运行您的命令。这将为您提供加载的所有模块的详细日志以及它们的来源
如果只需要一个命令,可以运行:
$ NODE_DEBUG=module <command>
$NODE\u DEBUG=模块
唯一的警告是,这会显示大量信息。因此,grep
是您的朋友。节点将首先搜索本地模块,如果在那里找不到正确的模块,它将在其他地方继续搜索,如图所示:
您应该能够使用require.resolve('mocha')
来确定当前加载模块的位置。这样你就可以知道哪一个被加载了。如果它位于您的项目目录下-它是本地的-否则它是全局的。我认为应用程序在项目运行时首先在本地搜索,如果找到它,将使用它。我这样认为是因为package.json允许在依赖项和libs中进行一些配置。我认为您不能在代码中检查,而是在package.json文件中检查。谢谢,这很有帮助。