最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Heroku + MEAN堆栈错误:参数“url”必须是字符串,而不是未定义

IT培训 admin 1浏览 0评论

Heroku + MEAN堆栈错误:参数“url”必须是字符串,而不是未定义

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

url.js:88抛出新的TypeError('参数'url“必须是一个字符串,而不是'+ typeof url); ^

TypeError:参数“url”必须是字符串,而不是未定义 在Url.parse(url.js:88:11) at Object.urlParse [as parse](url.js:82:5) 在module.exports(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/url_parser.js:15:23) 在connect(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:480:16) 在Function.MongoClient.connect(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:244:3) 在对象。 (/Users/Ananda/mean-contactlist/server.js:17:21) 在Module._compile(module.js:570:32) 在Object.Module._extensions..js(module.js:579:10) 在Module.load(module.js:487:32) 在tryModuleLoad(module.js:446:12)

根据我的理解,当我用“节点服务器”启动应用程序时,它无法找到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'

Heroku + MEAN堆栈错误:参数“url”必须是字符串,而不是未定义

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

url.js:88抛出新的TypeError('参数'url“必须是一个字符串,而不是'+ typeof url); ^

TypeError:参数“url”必须是字符串,而不是未定义 在Url.parse(url.js:88:11) at Object.urlParse [as parse](url.js:82:5) 在module.exports(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/url_parser.js:15:23) 在connect(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:480:16) 在Function.MongoClient.connect(/Users/Ananda/mean-contactlist/node_modules/mongodb/lib/mongo_client.js:244:3) 在对象。 (/Users/Ananda/mean-contactlist/server.js:17:21) 在Module._compile(module.js:570:32) 在Object.Module._extensions..js(module.js:579:10) 在Module.load(module.js:487:32) 在tryModuleLoad(module.js:446:12)

根据我的理解,当我用“节点服务器”启动应用程序时,它无法找到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'
发布评论

评论列表 (0)

  1. 暂无评论