angularjs - Heroku + MEAN 堆栈错误 : Parameter "url" must be a string, 未定义

标签 angularjs node.js mongodb heroku mean-stack

我正在关注这个tutorial在 Heroku 上关于构建 MEAN Stack Contact APP 时,我遇到了一些奇怪的错误!虽然我的应用程序在部署后工作正常,但当我在本地运行该应用程序时,该应用程序无法连接到 Mongodb。我收到的错误是:

url.js:88 throw new TypeError('Parameter "url" must be a string, not ' + typeof url);
^

TypeError: Parameter "url" must be a string, not undefined
at Url.parse (url.js:88:11)
at Object.urlParse [as parse] (url.js:82:5)
at module.exports (/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/url_parser.js:15:23)
at connect (/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:480:16)
at Function.MongoClient.connect (/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:244:3)
at Object. (/Users/Ananda/mean-contactlist/server.js:17:21)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)

根据我的理解,当我使用“Node 服务器”启动应用程序时,它找不到 mongodb 数据库 url ...只是不确定为什么,因为它在 Heroku 上运行时发现它很好。我该怎么做才能在本地运行这个应用程序?他们在 Github 上有完整的应用程序。我也克隆了它并尝试在本地运行它并收到错误。为什么部署时可以工作,但本地却不行?

最佳答案

这是因为 mongo 客户端使用的环境变量是在远程服务器中定义的,而不是在本地定义的。只要未定义 MONGODB_URI(在 server.js 中),您就可以使用默认值:

// Connect to the database before starting the application server. 
mongodb.MongoClient.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/myLocalDb', function (err, database) {
  if (err) {
    console.log(err);
    process.exit(1);
  }

在这种情况下,您的本地 MongoDB 必须正在运行,并且当您创建新用户时将创建一个名为 myLocalDb 的数据库。

或者,如果您不想更改代码,您可以只向 MONGODB_URI 声明一个本地值:

set MONGODB_URI='mongodb://localhost:27017/myLocalDb'

关于angularjs - Heroku + MEAN 堆栈错误 : Parameter "url" must be a string, 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854311/

相关文章:

javascript - ng-check ="true" radio 选择更新时不工作

css - 如何在集成了 AngularJS 的情况下设置 Stripe 信用卡字段的样式?

javascript - 为什么Webstorm显示不可能的结果?

mysql - DATE 从 MySQL 更改为 NodeJS

javascript - Mongodb错误查询导致连接丢失

javascript - Mongoose Node js 中的“TypeError : meme. find(...).forEach 不是函数”?

javascript - 输入/返回时指令语法错误

javascript - 如何在没有 $scope 的情况下使用 $setValidity 设置输入验证

node.js - 从 NPM 缓存中清除 *just one* 包

node.js - geoNear 的 MongoDB 性能问题