#node.js #postgresql #express #heroku #deployment
#node.js #postgresql #экспресс #heroku #развертывание
Вопрос:
У меня возникли проблемы с развертыванием моего приложения Node / Postgres в Heroku. Когда я запускаю свой сценарий развертывания, сборка завершается, но после открытия подключения к базе данных выдается ошибка для отсутствующего модуля. Мой Procfile содержит web: node main.js
и мой сценарий запуска в package.json "start": "node main"
.
Ниже я прилагаю копию heroku logs
и код, main.js
который находится в корневом каталоге.
Журналы Heroku
2021-01-09T23:23:17.000000 00:00 app[api]: Build started by user ********@gmail.com
2021-01-09T23:23:34.407776 00:00 app[api]: Release v17 created by user ********@gmail.com
2021-01-09T23:23:34.407776 00:00 app[api]: Deploy 664cb125 by user ********@gmail.com
2021-01-09T23:23:34.721923 00:00 heroku[web.1]: State changed from crashed to starting
2021-01-09T23:23:35.000000 00:00 app[api]: Build succeeded
2021-01-09T23:23:38.364250 00:00 heroku[web.1]: Starting process with command `node main.js`
2021-01-09T23:23:41.218590 00:00 app[web.1]: Opening database connection to shoppies-nominator
2021-01-09T23:23:41.615336 00:00 app[web.1]: internal/modules/cjs/loader.js:818
2021-01-09T23:23:41.615350 00:00 app[web.1]: throw err;
2021-01-09T23:23:41.615350 00:00 app[web.1]: ^
2021-01-09T23:23:41.615351 00:00 app[web.1]:
2021-01-09T23:23:41.615351 00:00 app[web.1]: Error: Cannot find module 'volleyball'
2021-01-09T23:23:41.615352 00:00 app[web.1]: Require stack:
2021-01-09T23:23:41.615353 00:00 app[web.1]: - /app/server/index.js
2021-01-09T23:23:41.615353 00:00 app[web.1]: - /app/main.js
2021-01-09T23:23:41.615355 00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
2021-01-09T23:23:41.615356 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:667:27)
2021-01-09T23:23:41.615357 00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:887:19)
2021-01-09T23:23:41.615358 00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:74:18)
2021-01-09T23:23:41.615358 00:00 app[web.1]: at Object.<anonymous> (/app/server/index.js:3:20)
2021-01-09T23:23:41.615359 00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:999:30)
2021-01-09T23:23:41.615359 00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
2021-01-09T23:23:41.615360 00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:863:32)
2021-01-09T23:23:41.615360 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:708:14)
2021-01-09T23:23:41.615361 00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:887:19)
2021-01-09T23:23:41.615362 00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:74:18)
2021-01-09T23:23:41.615362 00:00 app[web.1]: at Object.<anonymous> (/app/main.js:4:13)
2021-01-09T23:23:41.615362 00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:999:30)
2021-01-09T23:23:41.615363 00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
2021-01-09T23:23:41.615363 00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:863:32)
2021-01-09T23:23:41.615364 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:708:14)
2021-01-09T23:23:41.615365 00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
2021-01-09T23:23:41.615366 00:00 app[web.1]: at internal/main/run_main_module.js:17:47 {
2021-01-09T23:23:41.615366 00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2021-01-09T23:23:41.615367 00:00 app[web.1]: requireStack: [ '/app/server/index.js', '/app/main.js' ]
2021-01-09T23:23:41.615367 00:00 app[web.1]: }
2021-01-09T23:23:41.703611 00:00 heroku[web.1]: Process exited with status 1
2021-01-09T23:23:41.752561 00:00 heroku[web.1]: State changed from starting to crashed
2021-01-09T23:58:53.127855 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=shoppies-nominator.herokuapp.com request_id=010f5699-f805-4ce0-92a5-74225a0eb610 fwd="69.141.164.13" dyno= connect= service= status=503 bytes= protocol=https
main.js
const {db} = require('./server/db')
const app = require('./server')
const PORT = process.env.PORT || 5409
db.sync()
.then(() => {
console.log('db synced')
app.listen(PORT, (e) => {
if (e) throw (e)
console.log(`Listening on port ${PORT}`)
})
})
Есть идеи?
Комментарии:
1. Поскольку в журнале указано, что вам не хватает волейбола модуля npm, можете ли вы запустить службу локально. Возможно, он находится в вашей папке node_modules, но не в вашем package.json на сервере, вы, вероятно, делаете что-то вроде app.use (volleyall)
2. Да, я могу запустить приложение локально, и у меня есть волейбол в моем
package.json
. Что касается того, где он используется, яrequire
помещаю его вserver/index.js
файл, затем вызываю его внутриapp.use()
3. что произойдет, если вы очистите папку модулей узла и package-lock.json и снова выполните установку npm, а затем запустите запуск npm?
4. Я получаю тот же журнал ошибок, удаляю ли я свое
node_modules
и переустанавливаюnpm
или удаляю приложение Heroku и создаю новое.