Reactjs “本地npm依赖性”;不包含package.json文件;在docker构建中,但在npm启动时运行良好

Reactjs “本地npm依赖性”;不包含package.json文件;在docker构建中,但在npm启动时运行良好,reactjs,docker,npm,dependencies,dockerfile,Reactjs,Docker,Npm,Dependencies,Dockerfile,我有一个npm模块,我正在本地工作,它是客户端应用程序中的一个依赖项 目录结构基本如下: /app /client /src App.js package.json Dockerfile.dev /shared /contexts package.json test.js /hooks { "name": "web", "version": "0.1.0", "private": true, "

我有一个npm模块,我正在本地工作,它是客户端应用程序中的一个依赖项

目录结构基本如下:

/app
  /client
    /src
      App.js
    package.json
    Dockerfile.dev
  /shared
    /contexts
      package.json
      test.js
    /hooks
{
  "name": "web",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "contexts": "file:../shared/contexts",
    "react": "^16.10.2",
    "react-dom": "^16.10.2",
    "react-scripts": "3.2.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
我的
package.json
如下所示:

/app
  /client
    /src
      App.js
    package.json
    Dockerfile.dev
  /shared
    /contexts
      package.json
      test.js
    /hooks
{
  "name": "web",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "contexts": "file:../shared/contexts",
    "react": "^16.10.2",
    "react-dom": "^16.10.2",
    "react-scripts": "3.2.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
将以下内容导入到
客户端/src/App.js

import { testImport } from 'contexts/test';
运行
npm start
时按预期工作

我遇到的问题是跑步:

docker build -t sockpuppet/testapp -f Dockerfile.dev .
它失败了,我得到一个错误:

npm ERR! Could not install from "../shared/contexts" as it does not contain a package.json file.
这是Dockerfile.dev

FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
我应该如何处理本地npm依赖关系

此外,向映像中的
/shared
添加类似以下内容会生成
复制失败:生成上下文之外的禁止路径:../shared/contexts()
错误:

COPY ../shared ./

好的,这样行。我将我的
Dockerfile.dev
更改为以下内容:

/app
  /client
    /src
      App.js
    package.json
    Dockerfile.dev
  /shared
    /contexts
      package.json
      test.js
    /hooks
{
  "name": "web",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "contexts": "file:../shared/contexts",
    "react": "^16.10.2",
    "react-dom": "^16.10.2",
    "react-scripts": "3.2.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}
FROM node:alpine
WORKDIR '/app'
COPY ./shared /shared
COPY ./web /app
RUN npm install
CMD ["npm", "run", "start"]
从基本项目目录(其中
/shared
/web
驻留),我运行:


你在层次结构中放置Dockerfile的位置?你能显示你的Dockerfile吗?看起来像上下文问题
。/shared/contexts“
这是在Dockerfile的上下文之外,你没有在Dockerfile中复制,那么你是如何得到这个错误的?我唯一能想到的是不要让它成为本地npm依赖项,但这样做会失去好处<代码>复制../shared./会生成
外部生成上下文
错误。