反应 - Docker 语法错误:意外令牌

问题描述

我有一个 React 应用程序,它在 Docker 外部启动,但不在内部。

我正在运行一个在 Docker 中运行的后端 Node 应用程序,这个失败的前端是问题所在。从之前的线程和问题中,我确定这不是 'globby' 模块的问题,很可能是我的配置或安装。

错误

react-scripts start
/usr/src/app/node_modules/react-dev-utils/node_modules/globby/index.js:49
...taskOptions
^^^
SyntaxError: Unexpected token ...
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/usr/src/app/node_modules/react-dev-utils/globby.js:10:14)
npm info lifecycle [email protected]~start: Failed to exec start script
npm ERR! Linux 4.19.128-microsoft-standard
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! node v6.11.1
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! [email protected] start: `react-scripts start`
npm ERR! Exit status 1

我的 Dockerfile

FROM node:6.11.1
RUN mkdir -p /usr/src/app
workdir /usr/src/app

copY package.json ./
copY package-lock.json ./
RUN npm install


copY . .

EXPOSE 3000
CMD ["npm","start"]

我的 package.json

{
  "name": "react-frontend","version": "0.1.0","private": true,"dependencies": {
    "@testing-library/jest-dom": "^5.11.4","@testing-library/react": "^11.1.0","@testing-library/user-event": "^12.1.10","globby": "^11.0.1","react": "^17.0.1","react-dom": "^17.0.1","react-scripts": "^4.0.1","web-vitals": "^0.2.4"
  },"scripts": {
    "start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"
  },"eslintConfig": {
    "extends": [
      "react-app","react-app/jest"
    ]
  },"browserslist": {
    "production": [
      ">0.2%","not dead","not op_mini all"
    ],"development": [
      "last 1 chrome version","last 1 firefox version","last 1 safari version"
    ]
  }
}

我尝试过的:

  • 删除 node_modules 并重做 npm install
  • Docker 重建

解决方法

@vpalmerini 指出 Node 版本后,我更新到 14.15.4-alpine 并运行

docker-compose build
docker-compose up

所以现在我的 Dockerfile 包含

FROM node:14.15.4-alpine

应用程序现在按预期运行。