在使用 Express.js 进行开发时,我们经常会遇到 Cannot read property 'xxx' of null 错误,这是因为在处理请求时,我们没有对请求参数进行合理的判断和处理,导致出现了空值。
下面我们就来详细讲解如何解决这个错误。
问题分析
在 Express.js 中,我们经常需要获取请求参数,例如获取 GET 请求中的参数,代码如下:
app.get('/', (req, res) => { const param = req.query.param; // do something with param });
这段代码中,我们通过 req.query.param
获取了 GET 请求中的 param
参数。但是如果请求中没有 param
参数,那么 req.query.param
就会返回 null
,如果我们在后续代码中对 param
进行操作,就会出现 Cannot read property 'xxx' of null 错误。
解决方案
为了避免出现这种错误,我们需要对请求参数进行合理的判断和处理。
判断参数是否存在
在获取请求参数后,我们需要先判断参数是否存在,如果不存在,就给参数一个默认值。例如:
app.get('/', (req, res) => { const param = req.query.param || 'default value'; // do something with param });
这样,即使请求中没有 param
参数,param
也会有一个默认值。
判断参数类型
在获取请求参数后,我们还需要对参数类型进行判断,以避免出现类型错误。例如:
app.get('/', (req, res) => { const param = req.query.param; if (typeof param !== 'string') { // handle error } else { // do something with param } });
这样,即使请求中的 param
参数类型不是字符串,也不会出现类型错误。
判断参数取值范围
在获取请求参数后,我们还需要对参数取值范围进行判断,以避免出现取值错误。例如:
app.get('/', (req, res) => { const param = req.query.param; if (param !== 'value1' && param !== 'value2') { // handle error } else { // do something with param } });
这样,即使请求中的 param
参数取值不在指定范围内,也不会出现取值错误。
总结
在 Express.js 中,为了避免出现 Cannot read property 'xxx' of null 错误,我们需要对请求参数进行合理的判断和处理。需要判断参数是否存在、参数类型是否正确、参数取值范围是否正确等。只有这样,我们才能写出健壮的代码。
示例代码:
app.get('/', (req, res) => { const param = req.query.param || 'default value'; if (typeof param !== 'string') { res.status(400).send('Bad Request'); } else { // do something with param } });
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d2b086add4f0e0ffb01961