【问题标题】:ERR_INVALID_ARG_TYPE errorERR_INVALID_ARG_TYPE 错误
【发布时间】:2018-04-18 07:39:36
【问题描述】:

我在学习 Angular 2 时从 API 获取数据时遇到问题。这是我遇到的错误

url.js:106 抛出新错误。TypeError('ERR_INVALID_ARG_TYPE', 'url', 'string', url); TypeError [ERR_INVALID_ARG_TYPE]:“url”参数必须是字符串类型。在 Url.parse (url.js:106:11) 收到未定义的类型

这是我正在使用的代码

index.js

const express = require('express');
const app = express();

const MongoClient = require('mongodb').MongoClient;

require('dotenv').config();

let database;

MongoClient.connect(process.env.DB_CONN, (err, db) => {

console.log('connected to mongodb...');

app.listen(3000, () => {
    database = db;
    console.log('listening on port 3000...')
});
});

app.get('/contacts', (req, res) => {
const contactsCollection = database.collection('contacts');

contactsCollection.find({}).toArray((err, docs) => {
    if(err) {
        console.log(err);
    }
    return res.json(docs);
});
});

.env

DB_CONN=mongodb://admin:password@ds117931.mlab.com:17931/dem-contact

我不明白这个错误,我唯一的 url 在我的 env 文件中,因为我使用的是 mlab mongodb。我的代码有什么问题?

【问题讨论】:

  • 能否提供您的.env 文件样本?
  • @JosephReeve 在我的编辑中添加了 .env 文件的内容
  • 我了解到您的环境变量 process.env.DB_CONN 没有被正确处理,它被作为 undefined 传递。你是如何启动应用程序的?
  • 您的应用程序运行情况如何?通过一些 IDE 的控制台?
  • 只是想补充一下,也有可能是你写错了变量名造成的。

标签: javascript angular mongodb


【解决方案1】:

您的 DB_CONN 变量需要一些引号。

DB_CONN=mongodb://admin:password@ds117931.mlab.com:17931/dem-contact 应该 DB_CONN='mongodb://admin:password@ds117931.mlab.com:17931/dem-contact'

您的 .env 文件应位于项目文件夹的根目录(与 node_modules 文件夹相同的文件夹)

或者您可以将选项中的路径属性传递给.config(),例如:

.config({ path: '/somewhere/else/.env' })

【讨论】:

  • 插入引号后仍然出现同样的错误
  • 在需要dotenv文件后,可以console.log uri吗?
  • 您的 .env 文件是否与您的 node_modules 文件夹位于同一目录中?即,您项目的根目录?
  • 根据您的回答解决。我意识到我的 .env 文件不在根文件夹中。把它移到那里,问题就解决了
猜你喜欢
  • 2020-12-26
  • 2021-11-26
  • 2022-01-10
  • 2020-12-03
  • 2019-08-18
  • 2021-04-16
  • 2021-05-07
  • 1970-01-01
  • 2021-08-31
相关资源
最近更新 更多