2014-01-10 38 views
2

我有两个问题。TypeError - 参数必须是字符串解析URL时

我在

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

说抛出新的TypeError下面

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; 

错误信息点的代码片段( “参数 'URL' 必须是一个字符串。没有” + typeof运算URL)

该statemet有什么问题?我必须把这个陈述放在一个函数中吗?但是,我不知道我应该为dong url解析创建什么函数。

我的第二个问题涉及下面的代码片段。我可以比较从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'); 
} 

非常感谢您提前。

+0

关于你提到的第一个问题,这是更好地分享你的目标,因为你以错误的方式组织你的代码:'req' c将annot用作对象。请阅读关于回调的更多信息。 –

回答

0

var req = require('request')

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

REQ是一个功能...

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

+0

我还是不明白。我已经尝试** var path = req.url.pathname; **并且我得到了另一个TypeError:无法读取未定义的属性'路径名'。我检查了URL模块。看来我应该做** var path = url.parse(req).pathname; **但是,它也不起作用。 – user3182976

+0

只读:req是一项功能。我不知道你想要达到什么目标,但是你做错了。我建议你,没有任何坏处,放弃NodeJS,并从简单的Javascript开始。 – farvilain

0

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

您需要解析req变量所在路由函数内部的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; 
} 
相关问题