yol*_*RAC 1 heroku mongodb node.js
初学者使用 Node.js 我在 Heroku 上部署服务器时遇到问题。
\n\n我制作了一个使用 mongodb 的 server.js 应用程序。\n当我使用“npm start”cmd 在本地( http://localhost:3000 )上运行服务器时,它工作正常,我能够连接到我的mongo数据库通过命令:
\n\nmongoose.connect(\n\'mongodb+srv://yolanpibrac:mypassword@cluster0-7z1th.mongodb.net/test? retryWrites=true&w=majority\';, \n{ useNewUrlParser: true }) \n
Run Code Online (Sandbox Code Playgroud)\n\n(我遵循了本教程:[ https://appdividend.com/2018/04/14/how-to-deploy-nodejs-app-to-heroku/])
\n\n但是当我在heroku上部署我的应用程序时,该应用程序无法连接到mongo db。我有以下错误(通过检查:heroku log -t):
\n\n2019-08-06T21:06:33.086146+00:00 heroku[web.1]: Starting process with command `node src/server.js`\n2019-08-06T21:06:35.404641+00:00 heroku[web.1]: State changed from starting to up\n2019-08-06T21:06:35.058357+00:00 app[web.1]: Listening on port 26845\n2019-08-06T21:06:36.144056+00:00 app[web.1]: Error while DB connecting\n2019-08-06T21:06:36.149809+00:00 app[web.1]: { MongoNetworkError: failed to connect to server [cluster0-shard-00-00-7z1th.mongodb.net:27017] on first connect [MongoNetworkError: connection 5 to cluster0-shard-00-00- 7z1th.mongodb.net:27017 closed]\n2019-08-06T21:06:36.149812+00:00 app[web.1]: at Pool.<anonymous> (/app/node_modules/mongodb-core/lib/topologies/server.js:431:11)\n2019-08-06T21:06:36.149814+00:00 app[web.1]: at Pool.emit (events.js:189:13)\n2019-08-06T21:06:36.149815+00:00 app[web.1]: at connect (/app/node_modules/mongodb-core/lib/connection/pool.js:557:14)\n2019-08-06T21:06:36.149816+00:00 app[web.1]: at callback (/app/node_modules/mongodb-core/lib/connection/connect.js:109:5)\n2019-08-06T21:06:36.149818+00:00 app[web.1]: at runCommand (/app/node_modules/mongodb-core/lib/connection/connect.js:129:7)\n2019-08-06T21:06:36.149819+00:00 app[web.1]: at Connection.errorHandler (/app/node_modules/mongodb-core/lib/connection/connect.js:321:5)\n2019-08-06T21:06:36.149820+00:00 app[web.1]: at Object.onceWrapper (events.js:277:13)\n2019-08-06T21:06:36.149821+00:00 app[web.1]: at Connection.emit (events.js:189:13)\n2019-08-06T21:06:36.149823+00:00 app[web.1]: at TLSSocket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:350:12)\n2019-08-06T21:06:36.149824+00:00 app[web.1]: at Object.onceWrapper (events.js:277:13)\n2019-08-06T21:06:36.149825+00:00 app[web.1]: at TLSSocket.emit (events.js:189:13)\n2019-08-06T21:06:36.149826+00:00 app[web.1]: at _handle.close (net.js:613:12)\n2019-08-06T21:06:36.149828+00:00 app[web.1]: at TCP.done (_tls_wrap.js:386:7)\n2019-08-06T21:06:36.149829+00:00 app[web.1]: name: \'MongoNetworkError\',\n2019-08-06T21:06:36.149830+00:00 app[web.1]: errorLabels: [ \'TransientTransactionError\' ],\n2019-08-06T21:06:36.149832+00:00 app[web.1]: [Symbol(mongoErrorContextSymbol)]: {} }\n
Run Code Online (Sandbox Code Playgroud)\n\n我已经阅读了与此问题相关的所有问题,但没有一个解决方案有效。\n我有带有集群连接字符串的 mongodb 帐户\n我在密码中小心翼翼地确保所有特殊字符均经过 URL 编码。\n我有一个 procfile : web: 节点src/server.js 和一个index.html 文件
\n\n我的 server.js 文件:
\n\n//D\xc3\xa9finition des modules\nconst express = require("express");\nconst mongoose = require("mongoose");\nconst bodyParser = require(\'body-parser\');\nconst app = express();\nconst path = require(\'path\');\n\n\n\nconst dbRoute = \'mongodb+srv://yolanpibrac:mypassword@cluster0- 7z1th.mongodb.net/test?retryWrites=true&w=majority\';\nconst dbRouteLocal = \'mongodb://localhost/db\';\n//Connexion \xc3\xa0 la base de donn\xc3\xa9e\nmongoose.connect(dbRoute, { useNewUrlParser: true }).then(() => {\n console.log(\'Connected to mongoDB\')\n}).catch(e => {\n console.log(\'Error while DB connecting\');\n console.log(e);\n});\n\n\n\nvar urlencodedParser = bodyParser.urlencoded({\n extended: true\n});\napp.use(urlencodedParser);\napp.use(bodyParser.json({limit: \'10mb\', extended: true}));\n\n//D\xc3\xa9finition des CORS\napp.use(function (req, res, next) {\n res.setHeader(\'Access-Control-Allow-Headers\', \'Origin,X-Requested- With,content-type,Accept,content-type,application/json\');\n res.setHeader(\'Access-Control-Allow-Origin\', \'*\');\n res.setHeader(\'Access-Control-Allow-Methods\', \'GET, POST, OPTIONS, PUT, PATCH, DELETE\');\n res.setHeader(\'Access-Control-Allow-Credentials\', true);\n next();\n});\n\n\n\nvar router = express.Router();\napp.use(\'/user\', router);\nrequire(__dirname + \'/controllers/userController\')(router);\n\n\napp.get(\'/\', function(req, res) {\n res.sendFile(path.join(__dirname, \'index.html\'));\n});\napp.get(\'*\', function(req, res) {\n res.sendFile(path.join(__dirname, \'index.html\'));\n});\n\n//D\xc3\xa9finition et mise en place du port d\'\xc3\xa9coute\nvar port = process.env.PORT || "3000";\n\napp.listen(port, () => console.log(`Listening on port ${port}`));\n
Run Code Online (Sandbox Code Playgroud)\n\n我的 package.json :
\n\n{\n "name": "movies-displayer",\n "version": "0.1.0",\n "engines": {\n "node": "11.4.0"\n },\n "private": true,\n "proxy": "http://yolan-pibrac.com",\n "dependencies": {\n "animated": "^0.2.2",\n "axios": "^0.19.0",\n "body-parser": "^1.19.0",\n "bootstrap": "^4.3.1",\n "express": "^4.17.1",\n "jwt-simple": "^0.5.6",\n "mongodb": "^3.3.0-beta2",\n "mongoose": "^5.6.8",\n "password-hash": "^1.2.2",\n "react": "^16.8.6",\n "react-activity": "^1.2.2",\n "react-animations": "^1.0.0",\n "react-bootstrap": "^0.32.1",\n "react-bootstrap-dropdown-menu": "^1.1.15",\n "react-dom": "^16.8.6",\n "react-multi-carousel": "^2.1.2",\n "react-popper": "^1.3.3",\n "react-pose": "^4.0.8",\n "react-redux": "^7.0.3",\n "react-router": "^4.3.1",\n "react-router-dom": "^4.3.1",\n "react-scripts": "3.0.1",\n "react-state-animation": "^0.1.0",\n "reactstrap": "^8.0.1",\n "redux": "^4.0.1",\n "styled-components": "^4.3.2"\n },\n "scripts": {\n "start": "node src/server.js"\n },\n "eslintConfig": {\n "extends": "react-app"\n },\n "browserslist": {\n "production": [\n ">0.2%",\n "not dead",\n "not op_mini all"\n ],\n "development": [\n "last 1 chrome version",\n "last 1 firefox version",\n "last 1 safari version"\n ]\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n如果需要,我可以提供更多详细信息!\n感谢您的帮助,
\n您可能需要允许 heroku 访问您的 mongodb 服务器。
您可以通过登录Mongodb atlas并单击左侧安全设置下的网络访问来实现此目的,然后单击右上角的添加IP地址并输入0.0.0.0/0作为IP地址以允许所有IP的访问或者添加你的heroku服务器的特定IP(如果可以的话)。
归档时间: |
|
查看次数: |
5457 次 |
最近记录: |