1

我对 node/express 还很陌生,但到目前为止我很喜欢。

我现在写了几个应用程序后注意到的一件事是,请求对象的属性值有时会在所需模块内的请求之间持续存在;不一定来自同一个 IP 甚至浏览器。

举个例子,这个超级简单的 GET 请求:

GET /lookup/?first=ben&last=ipsen

处理如下:

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        res.send(user) 
     });

 });

显然,这很好用,生活也很棒。但是...如果收到第二个请求,但其值为空或不存在,请说:

 GET /lookup/?first=

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        // user.first = ben 
        // user.last = ipsen !?
        res.send(user) 
     });

 });

这是由 require 缓存而不是 express 错误引起的问题吗?我在请求中加载模块是否犯了错误?在很多情况下,我想根据请求加载特定模块,但我可以在没有那个“要求”的情况下生活.. har。

我肯定在这里遇到了一些新手问题,但一如既往地感谢任何指导!

4

1 回答 1

2

require()缓存没有问题。它每次只会返回相同的对象,这并没有错。

我怀疑问题出在你的lookup模块上。您可能已经在全局范围内定义了一个变量,或者忘记var在它前面使用。

于 2013-06-24T03:11:47.497 回答