Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我可以将npm设置为使用.pac文件吗?_Node.js_Npm - Fatal编程技术网

Node.js 我可以将npm设置为使用.pac文件吗?

Node.js 我可以将npm设置为使用.pac文件吗?,node.js,npm,Node.js,Npm,我试图为npm(nodejs)设置一个私有注册表,但我不想复制整个公共数据库。我看到过关于如何做到这一点的帖子,但是,即使我遵循这种方法,我还有另一个问题。我的工作站位于VPN后面,因此我需要在NPM中设置代理,以便能够从公共注册表获取模块。如果我创建我的私有注册,它将位于公司VPN内(使其可公开访问不是一个选项)。这意味着我不需要代理来访问我的私有注册表,但正如我之前所说的,我确实需要它来访问公共注册表。 我从git获得了NPM的代码,但在修改它之前,我想我会问,有人知道如何绕过这个问题吗?我

我试图为npm(nodejs)设置一个私有注册表,但我不想复制整个公共数据库。我看到过关于如何做到这一点的帖子,但是,即使我遵循这种方法,我还有另一个问题。我的工作站位于VPN后面,因此我需要在NPM中设置代理,以便能够从公共注册表获取模块。如果我创建我的私有注册,它将位于公司VPN内(使其可公开访问不是一个选项)。这意味着我不需要代理来访问我的私有注册表,但正如我之前所说的,我确实需要它来访问公共注册表。 我从git获得了NPM的代码,但在修改它之前,我想我会问,有人知道如何绕过这个问题吗?我知道您可以在运行npm安装时指定注册表和代理,但我希望能够只运行npm安装。
是否仍有将pac文件应用于npm的方法?除了修改源代码,我还能做些什么吗?

我面临着这个问题。 我们在专用npm注册表前设置了一个nginx代理。我们在404上创建了一个到全局npm注册表的回退

因此,在执行npm安装时,我们只需指定nginx代理,这样就可以从私有注册表(如果找到)或全局注册表(如果找不到)提供包

这是您可以使用的nginx配置:

server {
    listen 80 default_server;

    location ~ ^/registry/*/ { 
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-NginX-Proxy true;

        proxy_pass  http://private_npm_upstream;
        proxy_intercept_errors  on;
        error_page 404 = @fallback-2;

        proxy_redirect off;
    }
    location @fallback-2 {
        access_log /var/log/nginx/global_npm.access.log;

        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host  registry.npmjs.org;
        proxy_set_header  X-NginX-Proxy true;

        proxy_pass http://registry.npmjs.org;
        proxy_redirect off;
        proxy_intercept_errors  on;
    }
}

upstream global_npm_upstream {
    server registry.npmjs.org;
}

upstream private_npm_upstream { 
    server 127.0.0.1:5984; 
}

您是如何使用pac文件进行安装的?我有同样的问题。当然你可以修改。但是,在您的系统上使用类似的代理程序(并执行
npm安装
)或使用类似的程序(即
proxychains npm安装
)运行npm不是更容易吗?我不确定这些代理是否支持,但您可以在运行
npm install
之前编写一个简单的脚本来配置它们。