Express replit.com-使用机密连接到猫鼬

Express replit.com-使用机密连接到猫鼬,express,mongoose,repl.it,Express,Mongoose,Repl.it,我不熟悉express.js和mongoose,并尝试解决freeCodeCamp中的一些示例。 我有一个奇怪的行为,找不到,这里有什么问题吗 以这种方式连接到数据库: 我错过了什么 package.json->依赖项: 以下是控制台内部的消息(处理机密): 您的应用程序正在监听端口3000 (节点:1022)未处理的PromisejectionWarning:TypeError:无法读取null的属性“split” 在parservconnectionstring(/home/runner

我不熟悉express.js和mongoose,并尝试解决freeCodeCamp中的一些示例。 我有一个奇怪的行为,找不到,这里有什么问题吗

以这种方式连接到数据库:
我错过了什么


package.json->依赖项: 以下是控制台内部的消息(处理机密):
您的应用程序正在监听端口3000
(节点:1022)未处理的PromisejectionWarning:TypeError:无法读取null的属性“split”
在parservconnectionstring(/home/runner/boilerplate-mongomongose-1/node_modules/mongodb/lib/core/uri_parser.js:50:23)
在parseConnectionString(/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/core/uri_parser.js:595:12)
在connect(/home/runner/boilerplate-mongomongose-1/node_modules/mongodb/lib/operations/connect.js:281:3)
at/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/mongo_client.js:256:5
在maybePromise(/home/runner/boilerplate-mongomongose-1/node_modules/mongodb/lib/utils.js:685:3)
在MongoClient.connect(/home/runner/boilerplate-mongomongose-1/node_modules/mongodb/lib/mongo_client.js:252:10)
at/home/runner/boilerplate-mongomongose-1/node_modules/mongoose/lib/connection.js:834:12
在新的承诺()
在NativeConnection.Connection.openUri(/home/runner/boilerplate-mongomongose-1/node_modules/mongoose/lib/Connection.js:831:19)
at/home/runner/boilerplate-mongomongose-1/node_modules/mongoose/lib/index.js:348:10
at/home/runner/boilerplate-mongomongose-1/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:5
在新的承诺()
promiseOrCallback(/home/runner/boilerplate-mongomongose-1/node_modules/mongoose/lib/helpers/promiseOrCallback.js:30:10)
在Mongoose._promiseOrCallback(/home/runner/boilerplate-mongomongose-1/node_modules/Mongoose/lib/index.js:1152:10)
在Mongoose.connect(/home/runner/boilerplate-mongomongoose-1/node_modules/Mongoose/lib/index.js:347:20)
反对。(/home/runner/boilerplate-mongomongoose-1/myApp.js:6:10)
(节点:1022)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:3)
(节点:1022)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

在项目的根目录中创建.env文件。以NAME=VALUE的形式在新行中添加特定于环境的变量

像这样在
.env
文件中定义您的
MONGO\u URI

NODE_ENV=development
MONGO_URI=mongodb+srv://<user>:<password>@cluster0.omzte.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

您是否绝对确定该值已设置?错误声明它的类型为NULL,这意味着它找不到您的ENV变量。感谢您的快速回复@PatrykCieszkowski!如果我用console.log(mySecret)打印它,至少会得到相同的字符串。下面是代码及其输出。我需要在其他地方初始化它吗?`require('dotenv').config();var mongoose=require('mongoose');const mySecret=process.env['MONGO_URI']console.log(mySecret);connect(mySecret,{useNewUrlParser:true,useUnifiedTopology:true});`在控制台“mongodb+srv://:@cluster0.omzte.mongodb.net/myFirstDatabase?retryWrites=true&w=mailty”中打印,然后提到“错误”消息。
require('dotenv').config();
var mongoose = require('mongoose');
var mySecret = process.env['MONGO_URI']

mongoose.connect(mySecret, { useNewUrlParser: true, useUnifiedTopology: true });
"dependencies": {
    "body-parser": "^1.15.2",
    "dotenv": "^8.2.0",
    "express": "^4.12.4",
    "mongodb": "^3.6.6",
    "mongoose": "^5.12.0"
},
Your app is listening on port 3000
(node:1022) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'split' of null
    at parseSrvConnectionString (/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/core/uri_parser.js:50:23)
    at parseConnectionString (/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/core/uri_parser.js:595:12)
    at connect (/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/operations/connect.js:281:3)
    at /home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/mongo_client.js:256:5
    at maybePromise (/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/utils.js:685:3)
    at MongoClient.connect (/home/runner/boilerplate-mongomongoose-1/node_modules/mongodb/lib/mongo_client.js:252:10)
    at /home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/connection.js:834:12
    at new Promise (<anonymous>)
    at NativeConnection.Connection.openUri (/home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/connection.js:831:19)
    at /home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/index.js:348:10
    at /home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:5
    at new Promise (<anonymous>)
    at promiseOrCallback (/home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/helpers/promiseOrCallback.js:30:10)
    at Mongoose._promiseOrCallback (/home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/index.js:1152:10)
    at Mongoose.connect (/home/runner/boilerplate-mongomongoose-1/node_modules/mongoose/lib/index.js:347:20)
    at Object.<anonymous> (/home/runner/boilerplate-mongomongoose-1/myApp.js:6:10)
(node:1022) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:1022) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
NODE_ENV=development
MONGO_URI=mongodb+srv://<user>:<password>@cluster0.omzte.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
const mySecret = process.env['MONGO_URI'];