JSONurl无法捕获空错误
我正在使用服务器JavaScript文件,JSON数据和节点服务器Atom编程!
var fs = require('fs'); var dataP = fs.readFileSync('database.json'); var data = JSON.parse(dataP); var express = require('express'); var app = express(); var server = app.listen(3000); app.use(express('website')); app.get('/check/:input', addInput); function addInput(request, response){ var inputData = request.params.input; if(!inputData){ response.send("Error: no input was found"); } }
所以我有terminal运行我的服务器进入nodemon server.js当我testing的URL代码@ 本地主机:3000 /检查它不会捕获我写的错误消息错误:没有input被发现 ,我觉得很奇怪,因为它是一个空input,如果我假设正确。 我也试图改变if语句,并补充说:
if(!data && data == null) //Also tried if(!data || data == null)
这些陈述似乎都没能抓住这个错误。 我从服务器得到的消息是: 无法获取/检查/
//if I add a ? at the end of input like this app.get('/check/:input?');
我会得到一条消息: 内部服务器错误
会有另一个解决scheme来处理捕捉错误? 我试图debugging这个,但它会跳过app.get行,然后我无法看到要检查的variables。
我找不到在文档中,但经过多次尝试,我能够得到它使用路由/check/:input*?
(注意星号和问号)。
这是我的代码:
const express = require('express'); const app = express(); const server = app.listen(3000); app.use(express('website')); app.get('/check/:input*?', (req, res) => { const { input } = req.params; if (!input) { res.send('Value not specified!'); } else { res.send(`Value was "${input}", woohoo!`); } });
- 访问
/check
打印Value was not specified
- 访问
/check/winning
打印Value was "winning", woohoo!
我用节点8.4.0进行testing,并在一个新项目中expression4.15.4。 上面的代码应该工作在节点6.7+和expression4.0+据我所知。
看到这个解决同样问题的答案 。