【问题标题】:JSON url can't catch a null errorJSON url 无法捕获 null 错误
【发布时间】:2018-01-31 09:37:00
【问题描述】:

我正在使用服务器 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 当我测试 url 代码 @ localhost:3000/check 时,它不会捕获错误我写的消息 Error: no input was found 我觉得这很奇怪,因为如果我假设正确,它是一个空输入。我还尝试更改 if 语句并添加:

 if(!data && data == null)

 //Also tried

 if(!data || data == null)

这些语句似乎都无法捕捉到错误。我从服务器返回的消息是:Cannot GET /check/

 //if I add a ? at the end of input like this

 app.get('/check/:input?');

我会收到一条消息:内部服务器错误

是否有其他解决方案来处理捕获错误?我尝试对此进行调试,但它会跳过 app.get 行,然后我无法查看要检查的变量。

【问题讨论】:

  • @styfle 不一样,我试过在 ?所以会是 app.get(/check/:input*?); 还是一样的,没有结果
  • 您只尝试过app.get('/check/:input*') 吗?
  • @styfle 是的!我也试过 app.get('/check/:input?*') 似乎没有任何效果
  • 如果您尝试不使用nodemon server.js 而只使用node server.js 会怎样?

标签: javascript json node.js server


【解决方案1】:

我在文档中找不到它,但经过几次尝试,我能够使用路由 /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,它解决了同样的问题。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多