herokuへデプロイをすると,
2019-07-16T14:23:00.870111+00:00 app[web.1]: Error: Cannot find module 'mongodb' 2019-07-16T14:23:00.870113+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) 2019-07-16T14:23:00.870115+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:562:25) 2019-07-16T14:23:00.870117+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:690:17) 2019-07-16T14:23:00.870119+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:25:18) 2019-07-16T14:23:00.870121+00:00 app[web.1]: at Object.<anonymous> (/app/view/js/chat.js:1:15) 2019-07-16T14:23:00.870123+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:776:30) 2019-07-16T14:23:00.870125+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10) 2019-07-16T14:23:00.870127+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:653:32) 2019-07-16T14:23:00.870129+00:00 app[web.1]: at tryModuleLoad (internal/modules/cjs/loader.js:593:12) 2019-07-16T14:23:00.870130+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:585:3) 2019-07-16T14:23:00.879815+00:00 app[web.1]: npm ERR! code ELIFECYCLE
のようなエラーになってしまいます.
もちろんnpm i mongod > npm init は済んでいて,
herokuの
mLab MongoDB
というものを使って
herokuでMONGODNを使う方法からmongodbのURIも変更しました.
しかし,まだエラーが出てしまいます
自分のmongoのコードは以下です
node
1MongoClient = require("mongodb").MongoClient ; 2let url = "mongodb://heroku_tfb7hwm9:a5vj4sn4ejbdjop442ui99tvni@ds141815.mlab.com:41815/heroku_tfb7hwm9"; 3let account = "heroku_tfb7hwm9" 4module.exports = class Mongo{ 5 6 constructor(date,chat,name){ 7 this.date = date ; 8 this.chat = chat ; 9 this.name = name 10 } ; 11 12 registration(){ 13 14 MongoClient.connect(url,{ useNewUrlParser: true }, (err, db) =>{ 15 if (err) throw err ; 16 17 let dbo = db.db(account) ; 18 let obj = {date : this.date ,chat : this.chat , name : this.name} ; 19 dbo.collection("chat").insertOne(obj, function(err, res) { 20 if (err) throw err ; 21 console.log("Number of documents inserted: " + res.insertedCount) ; 22 db.close() ; 23 }) ; 24 }) ; 25 } ; 26 27 28 findall(){ 29 let pr = new Promise(function(resolve, reject){ 30 MongoClient.connect(url, { useNewUrlParser: true },function(err, db) { 31 32 if (err) throw err; 33 let dbo = db.db(account); 34 dbo.collection("chat").find({},{ projection: { _id: 0 } }).toArray(function(err, result) { 35 if (err) throw err; 36 resolve(result) ; 37 console.log("チャットlist書き出し") 38 db.close(); 39 }); 40 }); 41 }); 42 return pr; 43} ; 44 45} 46
dbをmLaBから作らないといけない?
accountの部分がdb名になるのではないでしょうか?
試したこと
$mongo ds141815.mlab.com:41815/heroku_tfb7hwm9 -u <dbuser> -p <dbpassword>
MongoDB shell version v4.0.1 connecting to: mongodb://ds141815.mlab.com:41815/heroku_tfb7hwm9 MongoDB server version: 3.6.12 WARNING: shell and server versions do not match 2019-07-17T00:09:24.568+0900 E QUERY [js] Error: Authentication failed. : DB.prototype._authOrThrow@src/mongo/shell/db.js:1679:20 @(auth):6:1 @(auth):1:2 exception: login failed
Mongoのバージョンがあっていないのでしょうか?
cloud9ではmongoのバージョンは3.4でPC内のmongoは4.0です.
ローカルからダウングレードをするか,cloud9をアップグレードすればよいのでしょうか?
ちなみにcloud9のアップグレードを試したところ,
こちらの3.6verにしましたが,エラーがおきてしまいました.
どなたか詳しい方,解決方法をお教えください...
herokuでMongoDBが使いたいのです...
あなたの回答
tips
プレビュー