使用TypeORM连接MongoDB Atlas时出现'Unescaped slash'错误求助
解决TypeORM连接MongoDB Atlas时的'Unescaped slash in userinfo section'错误
你遇到的问题根源在于TypeORM的MongoDB配置格式错误:你把完整的MongoDB连接字符串放在了host字段中,而TypeORM对MongoDB的配置要求是,要么用url字段传入完整连接串,要么拆分配置(单独指定username、password、host等字段)。
当你把包含mongodb+srv://username:password@...的完整串放在host里时,TypeORM会错误地解析这部分内容,把username:password@后的部分当作主机地址,进而触发MongoDB驱动的解析错误——认为用户信息段里有未转义的斜杠。
修复方案
修改你的AppDataSource配置,将host字段替换为url字段:
import { DataSource } from "typeorm" export const AppDataSource = new DataSource({ type: "mongodb", // 用url字段传入完整连接字符串 url: "mongodb+srv://username:password@database.cluster.mongodb.net/?retryWrites=true&w=majority", useNewUrlParser: true, synchronize: true, useUnifiedTopology: true, logging: true, ssl: true, entities: [ "src/entity/*.ts" ], subscribers: [], migrations: [], })
或者也可以拆分配置项(适合需要动态修改参数的场景):
import { DataSource } from "typeorm" export const AppDataSource = new DataSource({ type: "mongodb", username: "your-username", password: "your-password", host: "database.cluster.mongodb.net", database: "your-db-name", // 可选,指定默认数据库 useNewUrlParser: true, synchronize: true, useUnifiedTopology: true, logging: true, ssl: true, entities: [ "src/entity/*.ts" ], subscribers: [], migrations: [], })
验证修复
修改配置后重新启动Express项目,连接MongoDB Atlas的错误应该会消失。如果仍然有问题,确认你的连接字符串是从MongoDB Atlas控制台复制的最新版本,确保用户名和密码没有拼写错误。
内容的提问来源于stack exchange,提问作者João Pedro
相关产品推荐
相关产品推荐

