如何知道调用的是全局模块还是本地模块?
How to know if global module is invoked or local?
节点模块可以在本地级别或全局级别安装,方法是在执行 npm install
时添加 -g
。
如果一个模块(例如mocha
)同时在本地和全局安装,当我require( "mocha" );
时会加载哪个?
我怎么知道现在在node的执行环境中加载的是哪一个?
如果一切都失败了,你可以使用:
$ export NODE_DEBUG=module
然后运行你的命令。这将为您提供正在加载的所有模块及其来源的详细日志。
如果你只需要一个命令,你可以运行:
$ NODE_DEBUG=module <command>
唯一的警告是这会显示很多信息。所以 grep
是你的朋友。
Node 将首先搜索本地模块,如果在那里找不到正确的模块 - 它将继续在其他地方搜索,如下所示:https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
您应该能够使用 require.resolve('mocha')
来确定当前加载模块的位置。这样你就可以知道加载了哪个。如果它位于您的项目目录下 - 它是本地的 - 否则它是全局的。
节点模块可以在本地级别或全局级别安装,方法是在执行 npm install
时添加 -g
。
如果一个模块(例如mocha
)同时在本地和全局安装,当我require( "mocha" );
时会加载哪个?
我怎么知道现在在node的执行环境中加载的是哪一个?
如果一切都失败了,你可以使用:
$ export NODE_DEBUG=module
然后运行你的命令。这将为您提供正在加载的所有模块及其来源的详细日志。
如果你只需要一个命令,你可以运行:
$ NODE_DEBUG=module <command>
唯一的警告是这会显示很多信息。所以 grep
是你的朋友。
Node 将首先搜索本地模块,如果在那里找不到正确的模块 - 它将继续在其他地方搜索,如下所示:https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
您应该能够使用 require.resolve('mocha')
来确定当前加载模块的位置。这样你就可以知道加载了哪个。如果它位于您的项目目录下 - 它是本地的 - 否则它是全局的。