TypeError: (0 , _schemaUtils.default) 不是函数
Posted
技术标签:
【中文标题】TypeError: (0 , _schemaUtils.default) 不是函数【英文标题】:TypeError: (0 , _schemaUtils.default) is not a function 【发布时间】:2021-02-19 23:12:57 【问题描述】:我有一个使用 create-react-app
创建的简单 React 应用程序,它在 localhost 上运行良好。我现在正在尝试 Dockerify 应用程序。这是我的 package.json:
"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"
]
这是我的 Dockerfile:
# 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"]
我用以下方式构建图像:
docker build --tag yeet .
然后我将图像作为容器运行:
docker run --publish 3000:3000 yeet
这会抛出:
$ docker run --publish 3000:3000 yeet
yeet@0.1.0 生产 /app npm run build && npm run start
yeet@0.1.0 构建 /app 反应脚本构建
/app/node_modules/eslint-webpack-plugin/dist/options.js:62 (0, _schemaUtils.default)(_options.default, 选项, ^
在 getOptions (/app/node_modules/eslint-webpack-plugin/dist/options.js:62:28) 在新的 ESLintWebpackPlugin (/app/node_modules/eslint-webpack-plugin/dist/index.js:30:44) 在 module.exports (/app/node_modules/react-scripts/config/webpack.config.js:749:7) 在对象。 (/app/node_modules/react-scripts/scripts/build.js:67:16) 在 Module._compile (internal/modules/cjs/loader.js:1015:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10) 在 Module.load (internal/modules/cjs/loader.js:879:32) 在 Function.Module._load (internal/modules/cjs/loader.js:724:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) 在 internal/main/run_main_module.js:17:47 npm 错误!代码 ELIFECYCLE npm 错误! errno 1 npm 错误! yeet@0.1.0 构建:
react-scripts build
npm 错误!退出状态 1 npm ERR! npm 错误!在 yeet@0.1.0 失败 构建脚本。 npm 错误!这可能不是 npm 的问题。那里 可能是上面的额外日志输出。npm 错误!可以在以下位置找到此运行的完整日志:npm ERR! /root/.npm/_logs/2020-11-07T12_47_03_927Z-debug.log npm 错误!代码 生命周期 npm 错误! errno 1 npm 错误! yeet@0.1.0 生产:
npm run build && npm run start
npm ERR!退出状态 1 npm ERR! npm 错误! yeet@0.1.0 生产脚本失败。 npm 错误!这是 npm 可能不是问题。可能有额外的日志记录 上面的输出。npm 错误!可以在以下位置找到此运行的完整日志:npm ERR! /root/.npm/_logs/2020-11-07T12_47_03_923Z-debug.log
有人看到我做错了吗?任何指针都会非常有帮助!
【问题讨论】:
哇,我弹出然后从webpack.config.js
中删除了ESLintPlugin
插件,解决了这个错误。
我遇到了类似的问题。我认为这与新版本的 react-scripts 有关
你用什么做造型? (CSS、SASS 等)
我只是在使用准系统 CSS
【参考方案1】:
我也有类似的问题。
尝试在您的 Dockerfile 中用 yarn 替换 npm 命令 - 它解决了我的问题。
所以你的 Dockerfile 应该是这样的:
# 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"]
【讨论】:
这是解决“缓存问题”的幸运解决方法,因为它也与 npm 一起运行。 我同意,正如你所写的那样。 npm 缓存清理 --force【参考方案2】:我确实有同样的问题。 如果它在本地运行,我不确定其他解决方案是否可以删除或降级库。
为了解决这里,我跑了
docker container prune
docker image prune
在开始构建之前确保我的 docker 是干净的。
如果不成功可以尝试删除yarn.lock
或package-lock.json
。
如果它可以帮助别人,我的文件是
.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;
运行
docker-compose.exe -f .\docker-compose.yml up --build
【讨论】:
这对我帮助很大!我想问一下,在您的docker-compose.prod.yml
中,应该是dockerfile: Dockerfile
还是dockerfile: Dockerfile.prod
?最后,我想指出,(因为我是 Docker 新手,我花了一些时间才弄清楚,所以这可能对其他人有帮助),为了构建 Dockerfile.dev,你需要运行docker build -f Dockerfile.dev -t devimage .
,然后你需要运行docker-compose -f docker-compose.dev.yml up
复制我的源文件时出错。我编辑了帖子。
酷。我仍然是 getting an error 但是,我会尝试在不降级的情况下解决这个问题,正如此处其他地方所建议的那样
rm -rf node_modules && yarn
帮了我【参考方案3】:
所以有两种方法可以解决这个问题:
从 React 17 和 react-scripts 4.0 降级
我之所以这样做,是因为我不想从 CRA 中退出(原因很明显)。 问题是由于我使用的样式库不能很好地与 CRA 处理 Eslint 的更新方式配合使用。
可能是其他问题,但似乎来自 react-scripts 4.0
This is mentioned in the changelog for react-scripts 4.0
退出 CRA
正如@duhaime 在 cmets 中提到的那样。您可以在仍然使用 React 17 和 react-scripts 4.0 的同时直接解决此问题,方法是弹出然后删除 ESLintPlugin 或更新加载程序以解决您正在使用的任何库的问题。
我个人会推荐前者,因为我确信问题会尽快得到解决。但是这两种选择都会让你到达那里。
【讨论】:
【参考方案4】:为我解决的问题是
-
降级依赖“styled-components”和
删除依赖“redux-devtools-extension”以及
删除 Docker 兑现文件 $ docker builder prune -a
【讨论】:
OP 不使用 styled-components 或 redux-devtools-extensions 我认为第 3 步就足够了。不需要 1 和 2。以上是关于TypeError: (0 , _schemaUtils.default) 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: (0 , _schemaUtils.default) 不是函数
Redux Saga EventChannel: TypeError: (0, _reduxSaga.take) 不是函数
未捕获的TypeError:(0,_store.configureStore)不是函数[重复]
未捕获的 TypeError: (0 , _firebase.auth) 不是函数
JEST 测试套件无法运行:TypeError: (0 , _reactRedux.connect) 不是函数
AWS Amplify 登录错误 - 登录错误... [TypeError: (0, _getRandomBase.default) 不是函数