“MongooseError:openUri() 的 uri 参数必须是字符串。当“未定义”时如何解决?- Node.js,MongoDB,Mongoose”

"MongooseError: The uri parameter to openUri() must be a string. How to resolve when 'undefined'? - Node.js, MongoDB, Mongoose"

提问人:Ronak Shah 提问时间:11/12/2023 最后编辑:David MazeRonak Shah 更新时间:11/12/2023 访问量:33

问:

“当我尝试在我的 Nest.js 应用程序中连接到 MongoDB 时,我遇到了 Mongoose 问题。我面临的错误是: MongooseError:参数必须是字符串,得到“undefined”。 有人可以帮助我了解可能导致此错误的原因并建议解决该错误的步骤吗?uriopenUri()

命令:

docker run projectName 

Docker文件:

FROM node:latest

# Create work directory
WORKDIR /usr/src/app

COPY package*.json ./

# Copy app source to work directory
COPY . /usr/src/app

# Install app dependencies
RUN npm install 

# Build
RUN npm run build

EXPOSE 3000

CMD [ "npm", "run","start:dev" ]

docker-compose 文件

version: '3.7'

services:
  app:
    container_name: app
    restart: always
    build: .
    ports:
      - "3000:3000"
    links:
      - mongo
  mongo:
    container_name: mongo
    image: mongo
    volumes:
      - ./data:/data/db
    ports:
      - "27017:27017"

我尝试了以下方法:

  1. 检查并确认在我的 Node.js 应用程序中正确定义了 MongoDB URI。
  2. 已验证Node.js和Mongoose版本以确保兼容性。
  3. 已检查 Dockerfile 以确保它包含必要的依赖项。
  4. 检查了 Docker run 命令,了解在传递环境变量或挂载卷时存在任何潜在问题。
  • 尽管做出了这些努力,我仍然遇到 MongooseError:uriparameter toopenUri() 必须是一个字符串,在 Docker 运行期间出现“未定义”错误。我的期望是,当应用程序在 Docker 容器中运行时,它应该成功连接到 MongoDB,就像它在 Docker 之外一样。

  • 任何关于我可以采取的其他步骤的指导或对可能导致此问题的原因的见解将不胜感激。谢谢!

node.js mongodb docker mongoose

评论

3赞 Tal Rofe 11/12/2023
您至少应该在应用程序中提供处理数据库连接的代码,因为问题就在那里

答: 暂无答案