我正在嘗試將我的應用程式發布到 Heroku 上課,但它一直在崩潰。這是我收到的錯誤代碼。我不完全確定發生了什么,H10 錯誤是一個籠統的陳述,也許這里有人可以解釋一下。這就是我在使用 heroku logs --tail 時得到的結果。編輯:我的應用程式在我的本地機器上運行良好,我只在嘗試發布到 Heroku 時出現此錯誤
2022-02-13T18:27:21.000000 00:00 app[api]: Build started by user nmendez6594@gmail.com
2022-02-13T18:27:38.841499 00:00 app[api]: Release v5 created by user nmendez6594@gmail.com
2022-02-13T18:27:38.841499 00:00 app[api]: Deploy 7d112609 by user nmendez6594@gmail.com
2022-02-13T18:27:39.000000 00:00 app[api]: Build succeeded
2022-02-13T18:27:39.104174 00:00 heroku[web.1]: State changed from crashed to starting
2022-02-13T18:27:40.901836 00:00 heroku[web.1]: Starting process with command `npm start`
2022-02-13T18:27:42.058731 00:00 app[web.1]:
2022-02-13T18:27:42.058745 00:00 app[web.1]: > budget-app@1.0.0 start
2022-02-13T18:27:42.058746 00:00 app[web.1]: > node server.js
2022-02-13T18:27:42.058746 00:00 app[web.1]:
2022-02-13T18:27:42.395832 00:00 app[web.1]: App running on port 55680!
2022-02-13T18:27:42.401378 00:00 app[web.1]: /app/node_modules/mongodb/lib/core/uri_parser.js:580
2022-02-13T18:27:42.401379 00:00 app[web.1]: return callback(new MongoParseError('URI malformed, cannot be parsed'));
2022-02-13T18:27:42.401380 00:00 app[web.1]: ^
2022-02-13T18:27:42.401380 00:00 app[web.1]:
2022-02-13T18:27:42.401380 00:00 app[web.1]: MongoParseError: URI malformed, cannot be parsed
2022-02-13T18:27:42.401381 00:00 app[web.1]: at parseConnectionString (/app/node_modules/mongodb/lib/core/uri_parser.js:580:21)
2022-02-13T18:27:42.401381 00:00 app[web.1]: at connect (/app/node_modules/mongodb/lib/operations/connect.js:283:3)
2022-02-13T18:27:42.401382 00:00 app[web.1]: at /app/node_modules/mongodb/lib/mongo_client.js:284:5
2022-02-13T18:27:42.401382 00:00 app[web.1]: at maybePromise (/app/node_modules/mongodb/lib/utils.js:692:3)
2022-02-13T18:27:42.401382 00:00 app[web.1]: at MongoClient.connect (/app/node_modules/mongodb/lib/mongo_client.js:280:10)
2022-02-13T18:27:42.401382 00:00 app[web.1]: at /app/node_modules/mongoose/lib/connection.js:836:12
2022-02-13T18:27:42.401383 00:00 app[web.1]: at new Promise (<anonymous>)
2022-02-13T18:27:42.401383 00:00 app[web.1]: at NativeConnection.Connection.openUri (/app/node_modules/mongoose/lib/connection.js:832:19)
2022-02-13T18:27:42.401384 00:00 app[web.1]: at /app/node_modules/mongoose/lib/index.js:351:10
2022-02-13T18:27:42.401384 00:00 app[web.1]: at /app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
2022-02-13T18:27:42.401384 00:00 app[web.1]: at new Promise (<anonymous>)
2022-02-13T18:27:42.401384 00:00 app[web.1]: at promiseOrCallback (/app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
2022-02-13T18:27:42.401384 00:00 app[web.1]: at Mongoose._promiseOrCallback (/app/node_modules/mongoose/lib/index.js:1149:10)
2022-02-13T18:27:42.401385 00:00 app[web.1]: at Mongoose.connect (/app/node_modules/mongoose/lib/index.js:350:20)
2022-02-13T18:27:42.401385 00:00 app[web.1]: at Object.<anonymous> (/app/server.js:19:10)
2022-02-13T18:27:42.401385 00:00 app[web.1]: at Module._compile (node:internal/modules/cjs/loader:1103:14)
2022-02-13T18:27:42.521294 00:00 heroku[web.1]: Process exited with status 1
2022-02-13T18:27:42.598710 00:00 heroku[web.1]: State changed from starting to crashed
2022-02-13T18:27:48.281004 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=budget-app-pwa4.herokuapp.com request_id=5de2651b-5f3f-4a1e-84f2-18c0123b8dd7 fwd="32.215.142.46" dyno= connect= service= status=503 bytes= protocol=https
2022-02-13T18:27:49.746492 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=budget-app-pwa4.herokuapp.com request_id=f15d0dc1-7a19-49e1-a743-13f31cac6c31 fwd="32.215.142.46" dyno= connect= service= status=503 bytes= protocol=https
這是我的 server.js 檔案
const express = require("express");
const logger = require("morgan");
const mongoose = require("mongoose");
const compression = require("compression");
const PORT = process.env.PORT || 3001;
const MONGODB_URI = process.env.MONGODB_URI || "mongodb://localhost/budget";
const app = express();
app.use(logger("dev"));
app.use(compression());
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(express.static("public"));
mongoose.connect(MONGODB_URI, {
useNewUrlParser: true,
useFindAndModify: false,
useUnifiedTopology: true
});
// routes
app.use(require("./routes/api.js"));
app.listen(PORT, () => {
console.log(`App running on port ${PORT}!`);
});
uj5u.com熱心網友回復:
查看日志檔案,您可以看到堆疊的頂部(在引發例外的點)指向parseConnectionString呼叫。正如您很可能推斷的那樣(因為您將其包含在標題中),上面的行是關于正在發生的事情的重要線索:
MongoParseError:URI 格式錯誤,無法決議
這表明您提供給mongoose.connect函式的連接字串存在問題。鑒于您共享的代碼,這只能是無效process.env.MONGODB_URI值或后備mongodb://localhost/budget的結果。根據配置 MongoDB 實體的方式,我可能傾向于首先檢查環境變數的值,但如果您對此不確定,最好先確定您的應用程式正在使用這兩個值中的哪一個(即,您可以記錄這個)。
總體而言,該問題似乎與您用于連接 MongoDB 實體的連接字串有關,而不是由您的應用程式問題明確引起的。
uj5u.com熱心網友回復:
您好,謝謝大家的幫助。我的問題是我在 URI 字串中使用了我的 Mongo 用戶名/密碼登錄資訊,而不是我的 Mongo 資料庫用戶名/密碼組合。我不確定這是否有意義,但我已經啟動并運行了。再次感謝你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427376.html
標籤:节点.js mongodb heroku 猫鼬 heroku-cli
下一篇:以格式讀取檔案和輸出
