Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript npm在一个docker映像中安装2个项目_Javascript_Node.js_Postgresql_Npm_Statsd - Fatal编程技术网

Javascript npm在一个docker映像中安装2个项目

Javascript npm在一个docker映像中安装2个项目,javascript,node.js,postgresql,npm,statsd,Javascript,Node.js,Postgresql,Npm,Statsd,我有一个docker容器,它将两个节点项目合并为一个。项目A是后台项目,项目B是使用npm包写入postgres数据库的postgres后端项目。我在两份单独的回购协议中同时拥有A和B。然后我将它们分别复制到docker图像中,如Dockerfile中的以下内容: COPY ./statsd/ /opt/statsd/ COPY ./postgres-backend/ /opt/statsd/postgres-backend/ 然后我将javascript从postgres-backend复制

我有一个docker容器,它将两个节点项目合并为一个。项目A是后台项目,项目B是使用npm包写入postgres数据库的postgres后端项目。我在两份单独的回购协议中同时拥有A和B。然后我将它们分别复制到docker图像中,如Dockerfile中的以下内容:

COPY ./statsd/ /opt/statsd/
COPY ./postgres-backend/ /opt/statsd/postgres-backend/
然后我将javascript从
postgres-backend
复制到docker内部的文件夹
/opt/statsd/backends/
。在这个阶段,我可以使用自己的package.json规范在
/opt/statsd
目录中安装
npm
。但是,我的
postgres backend
repo有自己的package.json文件,该文件指定了它需要的依赖项(在本例中为
pg
)。我尝试切换到
/opt/statsd/postgres backend
目录并执行
npm安装
。仅安装在子目录中的。当我在
/opt/statsd
目录中运行
statsd.js
时,它抱怨没有找到模块
pg


我如何用2 package.json解决这个项目的问题?

问题是你的应用程序依赖于pg包的特定版本。我会找到您需要的版本并运行:

npm install pg@x.x --save
其中x.x是应用程序运行和保存所依赖的版本,以确保在package.json文件中更新依赖项


你只需要告诉你的应用你的应用依赖哪个版本。(基本上).

npm安装pg@x.x不起作用???@lopezdp可以,但感觉像是黑客攻击,因为postgres后端的package.json被绕过了。如果将来在postgres后端项目中添加了另一个依赖项,该怎么办?我想知道是否有更好的办法来解决这个问题,那就是你的办法。您必须做的工作是,当新版本开始弃用不再支持的旧功能时,调试并更新与旧库相关的新版本。还要确保在npm命令的末尾添加--save,以确保它保存到项目的应用程序中!如果这个答案能解决你的问题,请告诉我。这不是黑客行为,而是在软件包不断扩展、更新、改进和改进的环境中,您如何使其工作。有时版本有不推荐的功能会破坏你的应用程序。你使用的是像ExpressJS这样的框架吗?