TypeError – 参数必须是stringparsingURL时

我有两个问题。

我有一个下面的代码片段

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“必须是一个string。不是”+ typeofurl)

这个状态怎么了? 我必须把这个声明放在一个函数中吗? 但是,我不知道我应该为dong urlparsing创build什么函数。

我的第二个问题是指下面的代码片段。 我可以比较从URL中提取的path并使用==比较string吗?

 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'); } 

非常感谢你提前。

       

网上收集的解决方案 "TypeError – 参数必须是stringparsingURL时"

var req = require('request')

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

请求是一个function…

是的,如果你有一个请求对象 ,那么path将是一个string,你可以使用=====

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

你需要parsing你的路由函数里的reqvariables所在的URL。

看下面的例子:

例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; }