错误:找不到模块@rollup/rollup-linux-x64-gnu。在 Docker 容器上

问题描述 投票:0回答:1

我进行了 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 

到目前为止我尝试了三种不同的“解决方案”。

  1. 将该依赖项添加为

    optionalDependencies
    中的
    package.json
    :

      "optionalDependencies": {
        "@rollup/rollup-linux-x64-gnu": "4.9.5"
      },
    
  2. 添加

    overrides

      "overrides": {
        "vite": {
          "rollup": "npm:@rollup/wasm-node"
        }
      }
    
  3. 尝试在 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: {}
docker vue.js docker-compose vite
1个回答
0
投票

只需在 Dockerfile 中的

RUN npm i
之前添加
RUN npm install
并再次重建所有内容:)

注意:请确保在忽略 node_modules 文件夹和 package-lock.json 的位置添加 .dockerignore

期待您的回复

© www.soinside.com 2019 - 2024. All rights reserved.