ошибка «процесс не определен» после реакции на выброс - PullRequest
0 голосов
/ 09 декабря 2018

После запуска yarn eject в моем реактивном проекте я получаю ошибку 'process' is not defined при вызове registerServiceWorker() в index.js .файлы в каталогах scripts и config не изменены.

Я получаю ту же ошибку для переменной module.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Поскольку подробностей относительно вашей настройки не так много, мой ответ предполагает, что вы используете create-react-app, который является наиболее распространенным инструментом с понятием команды eject.

Выиспользуют версию CRA, выпущенную до этого изменения , переименовывая файл registerServiceWorker в serviceWorker и , отключая ПО по умолчанию , поэтому версия <=1.1.5 основана на выпускетеги.

Сервисный работник CRA предназначен для кэширования ваших активов, чтобы ваше приложение все еще работало в автономном режиме.Если вам не нужна эта функция, одной простой вещью для исправления ошибки будет отключение вызова registerServiceWorker, так как это то же самое, что и в шаблоне.

Более болезненным было бы на самом делеобновите свой проект до CRA 2.x, но, вероятно, оно того стоит в долгосрочной перспективе, чтобы сохранить извлеченный проект как можно ближе к исходной точке.Существует руководство по обновлению, которое вы можете посмотреть на здесь .

Я сам создал новый проект CRA, используя последнюю версию, и извлек его, включив работника службы, и не столкнулся с какими-либовопрос того типа, который вы испытываете, поэтому, безусловно, тоже стоит рассмотреть.

0 голосов
/ 13 декабря 2018

Это происходит потому, что React использует process.env, чтобы определить, находитесь ли вы в среде разработки или производства.Начиная с get-started.md:

Примечание: по умолчанию, React будет в режиме разработки, который медленнее и не рекомендуется для производства.Чтобы использовать React в производственном режиме, установите переменную среды NODE_ENV в производственную (используя envify или DefinePlugin веб-пакета).

Например:

new webpack.DefinePlugin({
  "process.env": {
    NODE_ENV: JSON.stringify("production")
  }
});

Таким образом, чтобы построить его с помощью Rollup, необходимо заменить process.env.NODE_ENV на " development "или" production"- для этого вы можете использовать rollup-plugin-replace:

rollup({
  entry: 'main.js',
  plugins: [
    replace({
      'process.env.NODE_ENV': JSON.stringify( 'production' )
    })
  ]
}).then(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...