首页 > 解决方案 > TypeError:路径必须是字符串。码头工人反应

问题描述

我可以通过输入控制台在本地(在 Windows 和 linux 上)运行我的 react 应用程序

npm run

但是当我尝试在 docker 容器中运行它时,它会运行并监听端口 3001,但是当我通过浏览器打开应用程序时出现以下错误(带有内部服务器错误响应):

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:28:11)
    at Object.join (path.js:1236:7)
    at noopServiceWorkerMiddleware (/app/node_modules/react-dev-utils/noopServiceWorkerMiddleware.js:14:26)
    at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
    at /app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
    at next (/app/node_modules/express/lib/router/index.js:275:10)
    at launchEditorMiddleware (/app/node_modules/react-dev-utils/errorOverlayMiddleware.js:20:7)
    at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
    at /app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
    at next (/app/node_modules/express/lib/router/index.js:275:10)
    at handleWebpackInternalMiddleware (/app/node_modules/react-dev-utils/evalSourceMapMiddleware.js:42:7)
    at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)

我的码头文件:

# base image
FROM node:12.2.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json

RUN npm uninstall -g jest
RUN npm install -g jest
RUN npm cache clean --force
RUN npm install

RUN npm install --silent
RUN npm install react-scripts@3.4.0 -g --silent

# start app
CMD ["npm", "start"]

和我的 package.json 文件

{
  "name": "randevou-react",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.4.0",
    "@testing-library/user-event": "^7.2.1",
    "@types/react-router": "^5.1.4",
    "react": "^16.12.0",
    "react-datepicker": "^2.12.1",
    "react-dom": "^16.12.0",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.4.0",
    "typescript": "^3.7.4"
  },
  "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"
    ]
  }
}

我通过键入运行容器

docker run -d -v /app -v /app/node_modules -p 3001:3000 --rm randevoureact

在容器上,我的节点版本是 8.10.0,我的 npm 版本是 5.6.0 我完全是码头工人和前端问题的新手

我不知道它是否重要,但我在我的反应应用程序中使用 react-router 有人可以帮助我:(?

标签: reactjsdockernpm

解决方案


推荐阅读