#javascript #node.js #reactjs #express #heroku
#javascript #node.js #reactjs #экспресс #героку
Вопрос:
Привет, я пытался развернуть свое приложение в течение последних 3 часов и, похоже, не могу разобраться в проблеме. Я новичок в развертывании на heroku, и после устранения неполадок в течение последних двух часов я составил список вещей, которые я пробовал из других ответов
- добавление node_modules/ в .gitignore
- создание профиля и написание web: node server.js (server.js это файл, на котором я запускаю сервер)
- Проверка того, что я жестко закодировал порт, в котором мой код прямо сейчас находится server.js
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Listening on port:${PORT}`))
- перезапуск моего сервера с помощью heroku ps: scale web = 0, ожидание несколько секунд и heroku ps: scale web = 1
- повторное развертывание моего приложения
- установка для моей конфигурации конфигурации npm значения false
- запустив heroku run bash и npm start, я получаю больше ошибок, которые, по-видимому, имели какое-то отношение к bcrypt, в котором я установил последнюю версию и переустановил node_modules, но теперь я получаю это
это мой package.json
{
"name": "todolist",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" amp;amp; exit 1",
"start": "node server.js"
},
"repository": {
"type": "git",
"url": "hiding this"
},
"author": "",
"license": "ISC",
"bugs": {
"url": hiding this
},
"homepage": hiding this,
"dependencies": {
"bcrypt": "^5.0.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"morgan": "^1.10.0",
"mysql2": "^2.2.5",
"pg": "^8.5.1",
"sequelize": "^6.3.5"
},
"devDependencies": {
"sequelize-cli": "^6.2.0"
}
}
Это мой config.json
{
"development": {
"database": "todolist_development",
"dialect": "postgres"
},
"test": {
"database": "express_react_auth_test",
"dialect": "postgres"
},
"production": {
"use_env_variable": "DATABASE_URL",
"dialect": "postgres",
"dialectOptions": {
"ssl": true
}
}
}
любая помощь будет очень признательна
Комментарии:
1. Похоже, вам не хватает строки подключения к БД. Вы уверены, что установили его в env-файле?
2. в настоящее время у меня нет файла .env, нужен ли он для развертывания? и если да, то как мне это сделать? вы имеете в виду process.env? Я думал, что это было сделано автоматически heroku
3. Хорошо, как вы указываете значения, к которым вы обращаетесь с помощью process.env? Я думаю, вам нужно установить переменную DATABASE_URL. Это может быть полезно: devcenter.heroku.com/articles/config-vars
Ответ №1:
Возможно, вы забыли установить переменные среды в heroku. Просто поместите все ключи и значения, которые у вас есть в вашем .env, в переменные конфигурации heroku и не забудьте добавить дополнение db в свое приложение Heroku, если вы используете mysql, я бы рекомендовал использовать ClearDB.
Комментарии:
1. У меня нет файла .env, и я действительно не понимаю процесс.env извините, я очень медленный. Я запустил свое приложение heroku, запустив его,
heroku addons:add heroku-postgresql
и я проверил свой конфигурационный параметр для DATABASE_URL и установил для него значение postgres://kdlovcwzdgzrgi:7cb8342c1ea636be245f8c69f6c5349be4b9921b39128373fbe3168694259288@ec2-3-224-38-18.compute-1.amazonaws.com:5432/d95jfgnsi2cfbf Я попытался выполнить вызовы URL-адреса heroku, и единственное, что работает, это root (‘/’), если я попытаюсь выполнить вызов API для (‘/ todos’), он говоритсвязь не существует, потому что она не заполняет мою базу данных2. Я думаю, что, возможно, прямо сейчас я двигаюсь назад, если честно
3. @andrewkim пока вы успешно добавили дополнение Heroku Postgres, вам необходимо разобраться с миграциями БД, чтобы иметь таблицы в вашей БД. Вот ссылка для работы с миграциями в sequelize sequelize.org/master/manual/migrations.html