1

我有几个不在 npm 站点上的私有模块,我想在我的应用程序中使用它们,但是在 Elasticbeanstalk 上传时遇到了几个问题。(Elastic beanstalk 在每次上传后运行它的 npm install )。

  1. AWS 最初抱怨它在 NPM 上找不到这些私有模块,所以我从 package.json 文件中删除了它们的条目。

  2. 删除后,我再次使用包含这些包的 node_modules 文件夹上传了应用程序,然后 AWS 开始抱怨

    Error: Cannot find module 'my-private-module-name'
    

我想知道私有模块是如何工作的,所以我至少不必通过 NPM 进行部署,或者作为最后的手段,我会发布它们。

编辑

"dependencies": {
    "body-parser": "^1.12.4",
    "express": "^4.12.3",
    "multer": "^0.1.8",
    "mustache": "^2.0.0",
    "mysql": "^2.6.2",
    "my-private-module": "^1.0.5",
    "redis": "^0.12.1",
    "socket.io": "^1.3.3"
  },
4

1 回答 1

1

如果您不希望在 npm 上查找某些包,则需要有一种内部发布包的方式。

在您的个人包中,您需要添加 "publishConfig":{"registry":"http://my-internal-registry.local"}package.json文件中。

这将允许您在该位置查找包,而不是直接转到 NPM。

https://docs.npmjs.com/misc/registry

然后在你的 ~/.npmrc 文件中,你可以指定一个注册表,在 npm 上查找模块之前,npm 将首先使用它。

于 2015-05-26T19:59:28.617 回答