在nodejs中运行时检查包版本?

我有一些package.json中的条目定义为“*”

"dependencies": { "express": "4.*", "passport": "*", "body-parser": "*", "express-error-handler": "*" }, 

我不想冻结这些值到当前版本。 我怎么知道我的软件包在运行时的版本? 我不介意一一检查,因为我没有很多:)

顺便说一句:我不能做npm list --depth=0因为我不能直接访问vm(PaaS限制),只是日志。

您可以使用fs模块读取node_modules目录中的目录,然后在每个目录中读取package.json

 var fs = require('fs'); var dirs = fs.readdirSync('node_modules'); var data = {}; dirs.forEach(function(dir) { try{ var file = 'node_modules/' + dir + '/package.json'; file = fs.readFileSync(file, 'utf8'); var json = JSON.parse(file); var name = json.name; var version = json.version; data[name] = version; }catch(err){} }); console.debug(data['express']); //= 4.11.2