Nextjs фатальная производственная ошибка только после добавления нового пакета

#javascript #node.js #reactjs #next.js #modulenotfounderror

#язык JavaScript #node.js #реагирует на #next.js #модульный неосновательрор

Вопрос:

У нас есть приложение NextJS, которое работает в производстве уже пару лет.

Недавно я добавил storybook-addon-pseudo-states аддон, запустил код локально, протестировал и запустил в производство. Приложение отлично работало локально. хотите верьте, хотите нет, но после запуска в производство производство полностью прекратилось из-за этой странной ошибки.

 {"statusCode":500,"code":"MODULE_NOT_FOUND","error":"Internal Server Error","message":"Cannot find module 'react-is'nRequire stack:n- /opt/webapp/node_modules/styled-components/dist/styled-components.cjs.jsn- /opt/webapp/.next/server/pages/_document.jsn- /opt/webapp/node_modules/next/dist/next-server/server/require.jsn- /opt/webapp/node_modules/next/dist/next-server/server/load-components.jsn- /opt/webapp/node_modules/next/dist/next-server/server/api-utils.jsn- /opt/webapp/node_modules/next/dist/next-server/server/next-server.jsn- /opt/webapp/node_modules/next/dist/server/next.jsn- /opt/webapp/server.js"}  

Это наш пакет.json.

 {  "license": "UNLICENSED",  "private": true,  "scripts": {  "dev": "NODE_ENV=development yarn server-remove-types amp;amp; yarn server-watch",  "build": "yarn server-remove-types amp;amp; yarn server-compile amp;amp; yarn server-copy amp;amp; next build",  "server-remove-types": "flow-remove-types --all --pretty src/server --out-dir .untyped/server",  "server-compile": "ncc build .untyped/server/index.js --out .dist --minify --external next --external grpc",  "server-copy": "node ./util/copy.js --from .dist/index.js --to server.js",  "server-watch": "yarn server-watch-remove-types amp; yarn server-watch-compile amp; yarn server-watch-nodemon",  "server-watch-nodemon": "node .dist/index.js",  "server-watch-remove-types": "node util/watch-flow-remove-types.js --from src/server --to .untyped/server",  "server-watch-compile": "yarn server-compile --watch",  "lint-javascript": "eslint src",  "format": "eslint src --fix",  "type-install": "flow-typed install",  "type-upgrade": "flow-typed update",  "type-check": "flow check --color=always --show-all-errors",  "test-unit": "NODE_ENV=test jest --config ./config/jest.unit.config.js --colors",  "test-unit-watch": "yarn test-unit --watchAll --coverage false",  "test-unit-update-snapshots": "yarn test-unit --updateSnapshot",  "test-endpoints": "NODE_ENV=test jest --config ./config/jest.endpoints.config.js src/test/endpoints.spec.js",  "test-bdd": "echo 'Not implemented.'",  "test-contract": "echo 'Not implemented.'",  "test-e2e": "echo 'Not implemented.'",  "test-e2e-debug": "echo 'Not implemented.'",  "storybook": "start-storybook -p 3001",  "build-storybook": "build-storybook -o ./src/stories/storybook"  },  "engines": {  "node": "gt;=12"  },  "browserslist": [  "extends @dpgr/browserslist-config"  ],  "dependencies": {  "@dpgr/browserslist-config": "^1.1.0",  "@dpgr/react-components": "^3.7.0",  "@sentry/browser": "6.10.0",  "@sentry/node": "6.10.0",  "@sentry/tracing": "6.10.0",  "@tippy.js/react": "^2.2.3",  "@vercel/ncc": "^0.31",  "axios": "0.18.1",  "babel-plugin-superjson-next": "^0.3.1",  "chart.js": "^2.9.4",  "chokidar": "^3.3.1",  "color": "^3.1.0",  "convert-array-to-csv": "^1.0.9",  "cookie": "^0.4.0",  "date-fns": "^2.4.1",  "dompurify": "^2.0.2",  "draft-js": "^0.11.0",  "draft-js-export-html": "^1.3.3",  "draft-js-import-html": "^1.3.3",  "fastify": "^2.0.0",  "fastify-cookie": "^3.0.2",  "flow-remove-types": "^2.115.0",  "focus-visible": "^5.0.0",  "formik": "^1.3.2",  "fs": "^0.0.1-security",  "google-protobuf": "^3.14.0",  "grpc": "^1.24.4",  "grpc-web": "^1.2.1",  "http-status-codes": "^1.3.0",  "iban": "^0.0.14",  "jsonwebtoken": "^8.5.1",  "lodash": "^4.17.11",  "minimist": "^1.2.0",  "mkdirp": "^0.5.1",  "next": "^10.0.0",  "next-cookies": "^2.0.3",  "next-redux-wrapper": "^7.0.0",  "node-xlsx": "^0.15.0",  "nodemon": "^2.0.2",  "nprogress": "^0.2.0",  "openid-client": "^3.13.0",  "p-queue": "^6.2.1",  "path-to-regexp": "^6.2.0",  "re-reselect": "^3.0.0",  "react": "^17.0.1",  "react-aria-modal": "^4.0.0",  "react-chartjs-2": "^2.11.1",  "react-copy-to-clipboard": "^5.0.1",  "react-datepicker": "^3.0",  "react-dom": "^17.0.1",  "react-paginate": "^6.3.0",  "react-redux": "^7.2.2",  "react-select": "^3.0.8",  "redux": "^4.0.0",  "redux-saga": "^1.1.1",  "regenerator-runtime": "^0.13.3",  "reselect": "^4.0.0",  "styled-components": "^5.0.0",  "styled-reboot": "^4.0.1",  "superjson": "^1.7.5",  "uuid": "^3.3.2",  "xlsx": "^0.17.1",  "yup": "^0.28.0"  },  "devDependencies": {  "@babel/core": "^7.13.15",  "@babel/eslint-parser": "^7.13.14",  "@babel/helper-builder-react-jsx": "^7.15.4",  "@babel/helper-builder-react-jsx-experimental": "^7.12.11",  "@babel/plugin-transform-flow-strip-types": "^7.4.4",  "@storybook/addon-actions": "6.3.12",  "@storybook/addon-controls": "^6.3.12",  "@storybook/addon-essentials": "6.3.12",  "@storybook/addon-links": "6.3.12",  "@storybook/react": "6.3.12",  "@testing-library/jest-dom": "^5.11.9",  "@testing-library/react": "12.0.0",  "@testing-library/react-hooks": "7.0.1",  "@wojtekmaj/enzyme-adapter-react-17": "^0.4.1",  "babel-loader": "^8.0.5",  "babel-plugin-inline-react-svg": "^1.1.1",  "babel-plugin-module-resolver": "^4.0",  "babel-plugin-styled-components": "^1.10.0",  "css-loader": "6.4.0",  "enzyme": "^3.11.0",  "enzyme-to-json": "^3.6.1",  "eslint": "^7.24.0",  "eslint-config-airbnb": "^18.0.1",  "eslint-import-resolver-babel-module": "^5.3.0",  "eslint-plugin-flowtype": "^4.3.0",  "eslint-plugin-import": "^2.14.0",  "eslint-plugin-jest": "^23.1.1",  "eslint-plugin-jsx-a11y": "^6.0.3",  "eslint-plugin-react": "^7.11.1",  "eslint-plugin-react-hooks": "^4.2",  "fastify-http-proxy": "^2.1.0",  "flow-bin": "^0.110.0",  "flow-typed": "^2.4.0",  "jest": "^26.6.3",  "jest-styled-components": "^7.0.5",  "mockdate": "^2.0.5",  "pretty": "^2.0.0",  "redux-devtools-extension": "^2.13.9",  "redux-mock-store": "^1.5.3",  "redux-saga-test-plan": "^4.0.1",  "redux-testkit": "^1.0.6",  "storybook-addon-designs": "6.2.0",  "storybook-addon-next-router": "3.0.8",  "style-loader": "3.3.0",  "supertest": "^6.1.6"  },  "peerDependencies": {} }  

Это единственные изменения, внесенные в package.json, плюс несколько небольших изменений в сборниках рассказов.

Изменения в файле package.json

Есть идеи, в чем основная причина этой фатальной производственной ошибки?

Комментарии:

1. Можете ли вы воспроизвести проблему при next build amp;amp; next start локальном запуске (или любой другой эквивалент, который у вас есть для запуска рабочего приложения)?

Ответ №1:

Ошибка говорит о том, что вам не хватает библиотеки react-is , и, судя по вашему package.json , она не установлена.

Два сценария, которые приходят на ум, чтобы объяснить ошибки после установки пакета / только в рабочей среде.

Сценарий 1

Кто-то мог вручную удалить react-is из системы package.json в какой-то момент времени после последней синхронизации диспетчера пакетов и до вашего снимка экрана.

Менеджеры пакетов синхронизируют изменения package.json при выполнении установок, обновлений и удалений. Это означает, что когда вы добавили плагин для сборника рассказов, он удалил react-is пакет, потому что он больше не был указан в package.json файле.

Сценарий 2

Поскольку это происходит только в рабочей среде, приложение может не использоваться react-is , но оно все равно включено в файл.

 import ReactIs from 'react-is'  

Найдите в своем приложении react-is — если оно не используется, удалите неиспользуемые инструкции — если оно используется, вам необходимо установить пакет.

Комментарии:

1. react-is напрямую не используется и не импортируется нигде в коде. Это зависимость от зависимости. Я вижу, что он существует в пряже. блокировка файла до и после фиксации. поскольку это зависимость от зависимости, я вижу «require(‘react-is)» в комплекте _document.js файл. что не разрешило и не выдало ошибку. но так как «реагировать-это» находится в пряжи. блокировка до и после фиксации, я не знаю, почему она не могла ее разрешить.

2. Попробуйте удалить свою пряжу. заблокируйте и попросите yarn восстановить файл с помощью такой команды, как обновление yarn