我使用服务器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");
}
}
所以我让运行我的服务器的终端进入 nodemon server.js 当我测试网址代码@ localhost:3000 / check 时,它不会捕获错误我写的消息错误:没有找到输入我觉得很奇怪,因为如果我假设正确,它是一个空输入。我还尝试更改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?');
我会收到一条消息:内部服务器错误
是否有其他解决方案来处理捕获错误?我尝试调试这个,但它会跳过 app.get 行,然后我无法查看要检查的变量。
答案 0 :(得分:0)
我在文档中找不到它,但经过几次尝试后,我能够使用路线/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并在一个新项目中表达了4.15.4。上面的代码应该在节点6.7+中工作,并且据我所知可以表达4.0+。
请参阅解决同一问题的this answer。