Pla*_*256 6 node.js node-modules
我正在开发一个节点模块,我必须检查用户是否安装了特定的包(这是我必须遵循的逻辑),如果没有,则使用child_process.exec
.
这就是问题出现的地方,即使我的脚本安装了该包(node_modules
也包含它package.json
),如果我require.resolve
再次调用,它会说该模块不存在。
对于我发现的(来自node github问题),node有一种“缓存”,在第一次调用时,如果未安装该包,则该包的缓存条目设置为一个随机值,该值不是路径到它。然后,当您安装并尝试再次调用它时,它会调用该缓存条目。
有没有其他方法可以检查软件包是否已安装,或者我的本地节点安装是否已损坏?
检查软件包是否已安装的一种方法是尝试安装require
。请参阅下面的代码来验证是否未安装软件包。只需在注释now install themissing package之后添加安装它的代码即可。
try {
require('non-existent-package');
} catch (error) {
// return early if the error is not what we're looking for
if (error.code != 'MODULE_NOT_FOUND') {
throw error;
}
// now install the missing package
}
Run Code Online (Sandbox Code Playgroud)
让我知道这个是否奏效。
归档时间: |
|
查看次数: |
1897 次 |
最近记录: |