TypeError: (0, _schemaUtils.default) bir işlev değil
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
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
Bunu benim için çözen şuydu:
- "Stilli bileşenler" bağımlılığının eski sürüme geçirilmesi ve
- "redux-devtools-extension" bağımlılığını kaldırmanın yanı sıra
- Docker bozdurulmuş dosyaları silme $ docker builder prune -a
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.
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"]