以编程方式安装Npm并不起作用

时间:2014-12-10 19:20:33

标签: javascript node.js npm

我试图以编程方式使用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

1 个答案:

答案 0 :(得分:1)

你正试图传递npm它自己的配置文件。 load函数应该使用自己的配置,如果没有配置任何东西,则应该使用空对象。试试这个:

var npm = require("npm");

npm.load({}, function (err) {
    npm.commands.install(["express"], function(err, done) {
        console.log(err, done);
    });
});