У меня есть приложение для портфолио, которое я создал, которое называется Brew-It. Это приложение для поиска крафтового пива и пивоварен в США, созданное с использованием JavaScript, React, Webpack и Express.
Он завершен, но у меня возникли проблемы с развертыванием Heroku. Это журнал ошибок для устранения некоторых неполадок, которые я сделал.
Он начался с ошибки, говорящей, что «this.setState» не определен.

Пока я гуглил, как исправить эту ошибку, я нашел несколько решений для добавления .bind(this). Эта ошибка продолжала не меняться, получая ту же ошибку. Изменения, которые я вносил в свой код, не отображались на сервере.
Я использовал отладчик в Chrome, чтобы увидеть, что означает «это». «это» было «не определено». Я также поместил console.log('hello!!') в мою функцию handleBeerChange, но когда я нажимал кнопку поиска, «hello!!» не отображалось в моей консоли. .
Продолжил расследование…
Мне было интересно, не было ли что-то не так с Babel, потому что функция handleBeerChange получала синтаксическую ошибку из моего линтера для ‘=’. В настоящее время я использовал Babel версии 5 и обновился до Babel 6. Это ничего не изменило.
Затем я подумал, что мой сервер может использовать неправильные файлы. В моем файле production.js у меня есть две функции app.get для отправки файлов для запуска моего приложения на сервере. Я изменил __dirname на process.cwd(), чтобы посмотреть, изменит ли это то, что обслуживается.

process.cwd() возвращает текущий рабочий каталог, а __dirname возвращает имя каталога, содержащего файл исходного кода JavaScript. process.cwd() помог моему коду работать на Heroku, но он все еще не был таким же, как мой код локально.
Я просмотрел package.json, чтобы узнать, что делает npm start. В настоящее время он настроен на «node production.js». Запуск Npm был настроен для моего файла production.js.
Сравнивая два разных файла — production.js и файл index.js — я наблюдал, насколько отличаются команды в каждом файле.
В моем файле index.js был запущен webpack, а в моем файле production.js — нет.
Так получилось, что я использовал неправильную команду для локальной разработки. Мне нужно было использовать команду «npm run dev» вместо «npm start».
После всего этого — мое приложение наконец-то заработало! Вуаля!!
-D.