使npm安装工作没有互联网连接

时间:2015-12-18 06:19:24

标签: node.js nexus

在我们公司,我们有一个本地Sonatype Nexus,我们用它来缓存Npm,Maven,Nuget等。它被设置为公共存储库的代理,并且缓存了所有node_modules。然而,他们自己的npm模块仍然从互联网上获取其他工件,这可能会导致问题,因为我们希望拥有在我们控制下构建所需的一切。

例如,如果我们切断服务器的互联网连接,我们会在npm install期间收到这些错误:

else if{
document.getElementById('btnyes').style.display = 'none';
document.getElementById('btnno').style.display = 'none';
document.getElementById('yes').style.display = 'none';
document.getElementById('no').style.display = 'block';
}

无论如何要解决这个问题?非常感谢帮助和提示。

1 个答案:

答案 0 :(得分:1)

这种超越注册表的范围是NPM系统的弱点和包的验证。

实际上只有两种选择。它们都很难实现。

  1. 您可以拦截所有外部URL调用并将其重写为等效的本地资源。问题当然是可能存在很多问题,而且它们也会发生变化。

  2. 你可以做的另一件事是分叉那些与之相关的npm包,将链接更改为本地有效或某些替换,并将它们重新发布到你的内部npm存储库。给定存储库组中的正确顺序或使用包的不同版本或名称,您可以使用它。

  3. 不幸的是,我无法想到更好的事情。根据我的知识,没有其他真正的解决方案。

    Sonatype support site.

    中还提供了其他提示