我进行了 Docker 设置来运行我的 Vue 项目,但是当容器开始运行时,我收到了标题中的错误。
更多详情:
frontend-1 | > [email protected] dev
frontend-1 | > vite
frontend-1 |
frontend-1 | /app/node_modules/rollup/dist/native.js:87
frontend-1 | throw new Error(
frontend-1 | ^
frontend-1 |
frontend-1 | Error: Cannot find module @rollup/rollup-linux-x64-gnu. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
frontend-1 | at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:87:9)
frontend-1 | at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:96:76)
frontend-1 | ... 3 lines matching cause stack trace ...
frontend-1 | at Module._load (node:internal/modules/cjs/loader:1028:12)
frontend-1 | at cjsLoader (node:internal/modules/esm/translators:359:17)
frontend-1 | at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:308:7)
frontend-1 | at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
frontend-1 | at async ModuleLoader.import (node:internal/modules/esm/loader:323:24) {
frontend-1 | [cause]: Error: Cannot find module '@rollup/rollup-linux-x64-gnu'
frontend-1 | Require stack:
frontend-1 | - /app/node_modules/rollup/dist/native.js
frontend-1 | at Module._resolveFilename (node:internal/modules/cjs/loader:1149:15)
frontend-1 | at Module._load (node:internal/modules/cjs/loader:990:27)
frontend-1 | at Module.require (node:internal/modules/cjs/loader:1237:19)
frontend-1 | at require (node:internal/modules/helpers:176:18)
frontend-1 | at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:69:10)
frontend-1 | at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:96:76)
frontend-1 | at Module._compile (node:internal/modules/cjs/loader:1378:14)
frontend-1 | at Module._extensions..js (node:internal/modules/cjs/loader:1437:10)
frontend-1 | at Module.load (node:internal/modules/cjs/loader:1212:32)
frontend-1 | at Module._load (node:internal/modules/cjs/loader:1028:12) {
frontend-1 | code: 'MODULE_NOT_FOUND',
frontend-1 | requireStack: [ '/app/node_modules/rollup/dist/native.js' ]
frontend-1 | }
frontend-1 | }
frontend-1 |
frontend-1 | Node.js v21.6.2
Gracefully stopping... (press
到目前为止我尝试了三种不同的“解决方案”。
将该依赖项添加为
optionalDependencies
中的 package.json
:
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.9.5"
},
添加
overrides
:
"overrides": {
"vite": {
"rollup": "npm:@rollup/wasm-node"
}
}
尝试在 Dockerfile 中使用不同的 Node 版本。
到目前为止,它们都不起作用,每次我运行 docker-compose 时都会发生相同的错误。
我的前端项目 Dockerfile 是这样的:
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5173
CMD ["npm", "run", "dev"]
并且
docker-compose.yml
位于后端项目的另一个目录中:
version: "3.9"
services:
webquarto:
container_name: webquarto
image: webquarto:1.0.2
build: .
ports:
- "8000:8000"
env_file:
- .env
depends_on:
- db
volumes:
- ./:/var/www/html
db:
container_name: db
image: postgres:12
ports:
- "5432:5432"
environment:
POSTGRES_USER:
POSTGRES_PASSWORD:
POSTGRES_DB:
volumes:
- pgdata:/var/lib/postgresql/data
frontend:
build:
context: ../frontend
dockerfile: Dockerfile
ports:
- "5173:5173"
volumes:
- ../frontend:/app
- ../node_modules:/frontend/node_modules
depends_on:
- webquarto
volumes:
pgdata: {}
只需在 Dockerfile 中的
RUN npm i
之前添加 RUN npm install
并再次重建所有内容:)
注意:请确保在忽略 node_modules 文件夹和 package-lock.json 的位置添加 .dockerignore
期待您的回复