Strapi Heroku 部署无法连接到 MongoDB
Strapi Heroku deployment fails to connect to MongoDB
我正在尝试使用 mongoDB 将我的 Strapi 应用程序部署到 Heroku,但每次尝试部署时都会收到此错误。
debug ⛔️ Server wasn't able to start properly.
2020-06-11T10:38:53.257748+00:00 app[web.1]: [2020-06-11T10:38:53.257Z] error Error connecting to the Mongo database. Server selection timed out after 30000 ms
2020-06-11T10:38:53.268085+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-06-11T10:38:53.268583+00:00 app[web.1]: npm ERR! errno 1
2020-06-11T10:38:53.270443+00:00 app[web.1]: npm ERR! backend@0.1.0 start: `strapi start`
2020-06-11T10:38:53.270697+00:00 app[web.1]: npm ERR! Exit status 1
该应用程序在本地运行,我遵循了很多教程 (1, 2), including many versions of the offical Strapi documentation 以使其正常运行,但它们都会导致此错误。我查看了类似的 Stack 问题/Strapi github 问题,看看我的问题是否可以通过调整他们的答案来解决,但没有任何效果。
我已确保我的 heroku config
database_url 和 database_name 匹配我的 database_uri
字符串,我使用 yarn create strapi-app backend
创建了 strapi 应用程序,然后选择 mongo,确保不要使用 --quickstart
。
我的完整 strapi 应用程序,包括 database.js, server.js, *config/environments/production/database.json
可以在这里查看 https://github.com/KyleSFraser/Portfolio/tree/master/backend
我一直在兜圈子,不断使用尝试部署的文档或教程重建后端。我非常感谢任何解决这个反复出现的问题并使用 Heroku & Strapi 成功部署我的 mongoDB 的建议。
编辑
现在正在删除以前的配置变量
将 uri: env('DATABASE_URI' || ''),
添加到我的 database.js
文件已经解决了这个问题,但不确定为什么它一开始就不见了。
有类似问题的朋友,这里是我的database.js
和server.js
供参考;
database.js
defaultConnection: 'default',
connections: {
default: {
connector: 'mongoose',
settings: {
uri: env('DATABASE_URI' || ''),
host: env('DATABASE_HOST', '127.0.0.1'),
srv: env.bool('DATABASE_SRV', false),
port: env.int('DATABASE_PORT', 27017),
database: env('DATABASE_NAME', '(backend)'),
username: env('DATABASE_USERNAME', ''),
password: env('DATABASE_PASSWORD', ''),
},
options: {
authenticationDatabase: env('AUTHENTICATION_DATABASE', null),
ssl: env.bool('DATABASE_SSL', false),
},
},
},
});
server.js
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
});
最后确保所有 Heroku 配置变量都设置为匹配 mongoDB/database URI
的相关细分
我正在尝试使用 mongoDB 将我的 Strapi 应用程序部署到 Heroku,但每次尝试部署时都会收到此错误。
debug ⛔️ Server wasn't able to start properly.
2020-06-11T10:38:53.257748+00:00 app[web.1]: [2020-06-11T10:38:53.257Z] error Error connecting to the Mongo database. Server selection timed out after 30000 ms
2020-06-11T10:38:53.268085+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-06-11T10:38:53.268583+00:00 app[web.1]: npm ERR! errno 1
2020-06-11T10:38:53.270443+00:00 app[web.1]: npm ERR! backend@0.1.0 start: `strapi start`
2020-06-11T10:38:53.270697+00:00 app[web.1]: npm ERR! Exit status 1
该应用程序在本地运行,我遵循了很多教程 (1, 2), including many versions of the offical Strapi documentation 以使其正常运行,但它们都会导致此错误。我查看了类似的 Stack 问题/Strapi github 问题,看看我的问题是否可以通过调整他们的答案来解决,但没有任何效果。
我已确保我的 heroku config
database_url 和 database_name 匹配我的 database_uri
字符串,我使用 yarn create strapi-app backend
创建了 strapi 应用程序,然后选择 mongo,确保不要使用 --quickstart
。
我的完整 strapi 应用程序,包括 database.js, server.js, *config/environments/production/database.json
可以在这里查看 https://github.com/KyleSFraser/Portfolio/tree/master/backend
我一直在兜圈子,不断使用尝试部署的文档或教程重建后端。我非常感谢任何解决这个反复出现的问题并使用 Heroku & Strapi 成功部署我的 mongoDB 的建议。
编辑 现在正在删除以前的配置变量
将 uri: env('DATABASE_URI' || ''),
添加到我的 database.js
文件已经解决了这个问题,但不确定为什么它一开始就不见了。
有类似问题的朋友,这里是我的database.js
和server.js
供参考;
database.js
defaultConnection: 'default',
connections: {
default: {
connector: 'mongoose',
settings: {
uri: env('DATABASE_URI' || ''),
host: env('DATABASE_HOST', '127.0.0.1'),
srv: env.bool('DATABASE_SRV', false),
port: env.int('DATABASE_PORT', 27017),
database: env('DATABASE_NAME', '(backend)'),
username: env('DATABASE_USERNAME', ''),
password: env('DATABASE_PASSWORD', ''),
},
options: {
authenticationDatabase: env('AUTHENTICATION_DATABASE', null),
ssl: env.bool('DATABASE_SSL', false),
},
},
},
});
server.js
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
});
最后确保所有 Heroku 配置变量都设置为匹配 mongoDB/database URI
的相关细分