问题描述
我有一个 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
应用程序现在按预期运行。