我试图以编程方式使用npm api,如下所示:
var npm = require("npm");
npm.load(npm.config, function (err) {
npm.commands.install(["express"], function(err, done) {
console.log(err, done);
});
});
它返回以下错误:
C:\...>node app.js
C:\...\node_modules\npm\lib\utils\lifecycle.js:323
value = -1 !== value.indexOf("\n")
^
TypeError: Cannot call method 'indexOf' of undefined
at C:\...\node_modules\npm\lib\utils\lifecycle.js:323:26
at Array.forEach (native)
at makeEnv (C:\...\node_modules\npm\lib\utils\lifecycle.j
s:313:8)
at C:\...\node_modules\npm\lib\utils\lifecycle.js:49:15
at C:\...\node_modules\npm\lib\utils\lifecycle.js:122:12
at Object.oncomplete (evalmachine.<anonymous>:107:15)
我使用以下版本:
节点 - v0.10.33
npm - 1.4.28
答案 0 :(得分:1)
你正试图传递npm它自己的配置文件。 load函数应该使用自己的配置,如果没有配置任何东西,则应该使用空对象。试试这个:
var npm = require("npm");
npm.load({}, function (err) {
npm.commands.install(["express"], function(err, done) {
console.log(err, done);
});
});