所以我有一个前端Nuxt.js和一个FastAPI都在一个Docker容器中。两个服务器运行命令都可以在没有Docker的情况下工作。
Docker的文件系统如下所示:
├── Dockerfile -- FastAPI docker file
├── docker-compose.yml
└── front
├── Dockerfile -- Nuxt docker file
运行docker-compose up
时,FastAPI服务器正常工作,但nuxt抛出此错误
Nuxt-frontend | > @ start /front
Nuxt-frontend | > nuxt start
Nuxt-frontend |
Nuxt-frontend | internal/modules/cjs/loader.js:975
Nuxt-frontend | throw new ERR_REQUIRE_ESM(filename);
Nuxt-frontend | ^
Nuxt-frontend |
Nuxt-frontend | Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /front/node_modules/nuxt/bin/nuxt.mjs
Nuxt-frontend | at Module.load (internal/modules/cjs/loader.js:975:11)
Nuxt-frontend | at Function.Module._load (internal/modules/cjs/loader.js:877:14)
Nuxt-frontend | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
Nuxt-frontend | at internal/main/run_main_module.js:18:47 {
Nuxt-frontend | code: 'ERR_REQUIRE_ESM'
Nuxt-frontend | }
Nuxt-frontend | npm ERR! code ELIFECYCLE
Nuxt-frontend | npm ERR! errno 1
Nuxt-frontend | npm ERR! @ start: `nuxt start`
Nuxt-frontend | npm ERR! Exit status 1
Nuxt-frontend | npm ERR!
Nuxt-frontend | npm ERR! Failed at the @ start script.
Nuxt-frontend | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Nuxt-frontend |
Nuxt-frontend | npm ERR! A complete log of this run can be found in:
Nuxt-frontend | npm ERR! /root/.npm/_logs/2023-01-07T06_09_00_616Z-debug.log
Dockerfile看起来像这样:
FROM node:12.16.3-alpine3.9
# Create destination
RUN mkdir -p /front
WORKDIR /front
#compile app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
RUN npm build
EXPOSE 3000
ENV NUXT_HOST=0.0.0.0
ENV NUXT_PORT=3000
CMD [ "npm","run", "start" ]
.dockerignore看起来像这样:
node_modules
npm-debug*
.nuxt
dist
tests
.output
docker-compose.yml
看起来像这样:
version: '2'
services:
app:
build: .
container_name: FastAPI
command: uvicorn app.main:app --host 0.0.0.0
ports:
- 8000:8000
front:
build: ./front
container_name: Nuxt-frontend
command: npm start
ports:
- 3000:3000
注意:我已经尝试过将"type": "module"
添加到package.json中
1条答案
按热度按时间rqqzpn5f1#
不知道原因,但这是我如何解决它。
进入Docker桌面并删除所有容器和图像。
将docker文件更改为:
docker-compose.yaml看起来像这样:
然后运行
docker compose up