TypeError - 解析URL时参数必须是字符串

时间:2014-01-10 18:32:49

标签: node.js

我有两个问题。

我在下面有一段代码片段

var http = require('http'),      
    https = require('https'),
    crypto = require('crypto');
var S = require('string');
var url = require('url');
var req = require('request');

var path = url.parse(req.url).pathname;

错误消息指向

var path = url.parse(req.url).pathname;

说抛出新的TypeError(“参数'url'必须是一个字符串。不是”+ typeof url)

那个州有什么问题?我必须将该语句放在函数中吗?但是,我不知道我应该为dong url解析创建什么函数。

我的第二个问题是指下面的代码段。我可以比较从网址中提取的路径,并使用 == 将其与字符串进行比较吗?

if ((S(path) == '/lens/v1/ping') || (S(path) == '/lens/v1/PING')) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('The lens route is up and running!\n');
    res.end();
} else {
    res.writeHead(404, 'Not Found');
    res.end('HTTP 1.1 404/Not Found');
}

非常感谢你。

2 个答案:

答案 0 :(得分:0)

var req = require('request')

https://github.com/mikeal/request/blob/master/request.js

req是一个函数......

是的,如果您有对象请求,那么路径就是一个字符串,您可以使用=====

答案 1 :(得分:0)

如果req是请求模块,则req中不存在url。所以你必须得到错误。

您需要解析路由功能中的URL,其中req变量存在。

见下面的示例:

示例1:

app.get("/page", function(req, res) {
  var uri = url.parse(req.url).pathname;
}

示例2:

http.createServer(function(req, res){
  var uri = url.parse(req.url).pathname;
}