如何枚举模块中的包依赖项?
伙计我一直在编写一个node_module,它给你你选择的模块的依赖关系,所以有我的代码
function depend(modulename, cb) {
let package = JSON.parse(fs.readFileSync("./node_modules/"+modulename+'/package.json', "utf8"));
var re = 'CHECKING' ? package.dependencies : 'The module has no dependencies';
cb(re)
}
const fs = require('fs');
module.exports = depend;
当我运行它它在一个模块没有模块它给我{}
而不是The module has no dependencies
,所以任何想法?
var re = 'CHECKING' ? package.dependencies : 'The module has no dependencies';
是一个ternary。
这意味着:
如果'CHECKING'然后将
package.dependencies
分配给re
,否则将'The module has no dependencies'
分配给re
这是你的错误,if ('CHECKING')
将始终评估为true
所以它将始终将package.dependencies
分配给re
。您必须将代码重构为以下内容:
var re = Object.keys(package.dependencies).length > 0 ? package.dependencies : 'The module has no dependencies';
这将测试package.dependencies
是否具有一个或多个依赖关系,以便影响re
的正确值。我们不在length
上使用package.dependencies
,因为它是一个没有任何length
属性的对象,而是使用Object.keys
。
在评论中提供的第二个示例中,if (package.dependencies)
也将始终评估为true
,因为package.dependencies
不为null或未定义,因此它被认为是true
。