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+据我所知。

看到这个解决同样问题的答案 。