TypeError: (0, _schemaUtils.default) bir işlev değil

Nov 07 2020

create-react-appLocalhost'ta sorunsuz çalışan basit bir React uygulamam var . Şimdi uygulamayı Doğrulamaya çalışıyorum. İşte benim package.json'um:

{
  "name": "yeet",
  "version": "0.1.0",
  "engines": {
    "node": "12.x"
  },
  "scripts": {
    "client": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "start": "node server.js",
    "production": "npm run build && npm run start"
  },
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "axios": "^0.21.0",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "express-session": "^1.17.1",
    "mongoose": "^5.10.13",
    "mysql": "^2.18.1",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.0",
    "web-vitals": "^0.2.4"
  },
  "devDependencies": {
    "babel-core": "*",
    "babel-loader": "*",
    "babel-preset-es2015": "*",
    "babel-preset-react": "*",
    "babel-preset-stage-0": "*"
  },
  "babel": {
    "presets": [
      "@babel/env",
      "@babel/react",
      "babel-preset-stage-0"
    ],
    "env": {
      "start": {
        "presets": [
          "@babel/env",
          "@babel/react",
          "babel-preset-stage-0"
        ]
      }
    }
  }
}

Ve işte Dockerfile'ım:

# Specify base image
FROM node:12.19.0-alpine3.10

# Specify app location in host
WORKDIR /app

# Copy the dependency list
COPY package.json ./

# Install app dependencies
RUN npm install

# Copy app code to host
COPY . .

# Open specified port
EXPOSE 3000:3000

# Start the app
CMD ["npm", "run", "production"]

Görüntüyü şununla oluşturuyorum:

docker build --tag yeet .

Ardından görüntüyü bir kap olarak çalıştırıyorum:

docker run --publish 3000:3000 yeet

Bu fırlatır:

$ docker run - yayınla 3000: 3000 yeet

[email protected] üretim / uygulama npm run build && npm run start

[email protected] derleme / uygulama tepki betikleri derlemesi

/app/node_modules/eslint-webpack-plugin/dist/options.js:62 (0, _schemaUtils.default) (_ options.default, options, {^

TypeError: (0, _schemaUtils.default), yeni ESLintWebpackPlugin'de (/ app / node_modules / eslint-webpack- getOptions (/app/node_modules/eslint-webpack-plugin/dist/options.js:62:28) 'de bir işlev değildir. plugin / dist / index.js: 30: 44) module.exports'ta (/app/node_modules/react-scripts/config/webpack.config.js:749:7) Object. (/app/node_modules/react-scripts/scripts/build.js:67:16) Module._compile'de (dahili / module / cjs / loader.js: 1015: 30) Object.Module._extensions..js'de (dahili /modules/cjs/loader.js:1035:10) Module.load'da (dahili / modules / cjs / loader.js: 879: 32) Function.Module._load'da (dahili / modüller / cjs / loader.js: 724 : 14) Function.executeUserEntryPoint'te [runMain olarak] (dahili / modüller / run_main.js: 60: 12) internal / main / run_main_module.js'de: 17: 47 npm ERR! kod ELEKTRİKLİ npm HATA! hata no 1 npm ERR! [email protected] build:react-scripts buildnpm ERR! Çıkış durumu 1 npm ERR! npm ERR! [email protected] derleme komut dosyasında başarısız oldu. npm ERR! Bu muhtemelen npm ile ilgili bir sorun değildir. Yukarıda büyük olasılıkla ek günlük kaydı çıktısı vardır.

npm ERR! Bu çalışmanın tam günlüğü şurada bulunabilir: npm ERR!
/root/.npm/_logs/2020-11-07T12_47_03_927Z-debug.log npm ERR! kod ELIFECYCLE npm ERR! hata no 1 npm ERR! [email protected] üretim: npm run build && npm run startnpm ERR! Çıkış durumu 1 npm ERR! npm ERR! [email protected] üretim komut dosyasında başarısız oldu. npm ERR! Bu muhtemelen npm ile ilgili bir sorun değildir. Yukarıda büyük olasılıkla ek günlük kaydı çıktısı vardır.

npm ERR! Bu çalışmanın tam günlüğü şurada bulunabilir: npm ERR!
/root/.npm/_logs/2020-11-07T12_47_03_923Z-debug.log

Neyi yanlış yaptığımı gören var mı? Herhangi bir işaret çok yardımcı olacaktır!

Yanıtlar

1 XavierLambros Nov 17 2020 at 19:18

Ben de aynı sorunu yaşadım. Yerel olarak çalışıyorsa, kitaplıkları kaldırma veya eski sürüme geçirme ile ilgili diğer çözümlerden emin değilim.

Burada çözmek için koştum

docker container prune
docker image prune

inşa etmeye başlamadan önce docker'ımın temiz olduğundan emin olmak için.

Başarı yoksa yarn.lockveya silmeyi deneyebilirsiniz package-lock.json.

Başkalarına yardımcı olabilirse, dosyalarım

.dockerignore

.git
.gitignore
node_modules
build

Dockerfile.dev

FROM node:alpine

WORKDIR /app

COPY package.json /app

RUN yarn install

COPY . .

CMD ["yarn", "start"]

docker-compose.dev.yml

version: "3.8"
services:
  print:
    stdin_open: true
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - ".:/app"
      - "/app/node_modules"

Dockerfile.prod

FROM node:alpine as build

WORKDIR /app

COPY package.json /app

RUN yarn install

COPY . /app

RUN yarn run build

FROM nginx:stable-alpine
COPY ./nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/build /usr/share/nginx/html

docker-compose.prod.yml

version: "3.8"
services:
  print:
    stdin_open: true
    build:
      context: .
      dockerfile: Dockerfile.prod
    ports:
      - "80:80"

nginx.conf

server {  
  listen 80;
  server_name frontend;
  location / {
    root /usr/share/nginx/html;
    index index.html;
    try_files $uri /index.html;
  }
}

Koşmak

docker-compose.exe -f .\docker-compose.yml up --build
AlexMäder Nov 10 2020 at 17:56

Bunu benim için çözen şuydu:

  1. "Stilli bileşenler" bağımlılığının eski sürüme geçirilmesi ve
  2. "redux-devtools-extension" bağımlılığını kaldırmanın yanı sıra
  3. Docker bozdurulmuş dosyaları silme $ docker builder prune -a
LuisOsta Nov 12 2020 at 17:26

Bu nedenle, bu sorunu çözmenin iki yolu vardır:

React 17 ve react-scripts 4.0'dan sürüm düşürme

CRA'dan çıkarmak istemediğim için yaptığım şey buydu (bariz nedenlerden dolayı). Sorun, kullandığım stil kitaplığının, CRA'nın Eslint'i ele aldığı güncellenmiş yöntemle iyi oynamaması nedeniyle.

Başka problemler olabilir ama tepki betikleri 4.0'dan geliyor gibi görünüyor.

React-scripts 4.0 için değişiklik günlüğünde bundan bahsedilmektedir.

CRA Dışında Çıkarma

@Duhaime tarafından yapılan yorumlarda belirtildiği gibi. Bu sorunu doğrudan React 17 ve react-scripts 4.0 kullanırken, ESLintPlugin'i çıkarıp kaldırarak veya kullandığınız kitaplıkla ilgili sorunları gidermek için yükleyiciyi güncelleyerek doğrudan çözebilirsiniz.

Sorunun daha sonra değil daha erken çözüleceğinden emin olduğum için kişisel olarak ilkini tavsiye ederim. Ancak her iki seçenek de sizi oraya götürür.

ŠtefanOndáš Nov 19 2020 at 13:37

Benim de benzer bir problemim vardı.

Dockerfile'ınızda npm komutlarını iplik ile değiştirmeye çalışın - bu benim sorunumu çözdü.

Yani Dockerfile'ınız şöyle görünmeli:

# Specify base image
FROM node:12.19.0-alpine3.10

# Specify app location in host
WORKDIR /app

# Copy the dependency list
COPY package.json ./

# Install app dependencies
RUN yarn install

# Copy app code to host
COPY . .

# Open specified port
EXPOSE 3000:3000

# Start the app
CMD ["yarn", "run", "start", "production"]