NodeJS - '错误:无效的URI“/”'

时间:2017-10-01 04:03:03

标签: javascript node.js ajax express request-promise

我正在使用request-promise来请求本地项目目录文件夹中本地存在的两个JSON数据文件。 即:

enter image description here

但是,当我尝试将数据传递给视图并且我的节点控制台输出library(grid) m<-readPNG("1.png") y <- rgb(m[,,1], m[,,2], m[,,3]) dim(y) <- dim(m)[1:2] y[y=="#008C46"]<-"#FFFF00" grid.raster(y, interpolate=FALSE)

时,我收到500内部服务器错误

请参阅以下内容:

server.js

'Error: Invalid URI "/"',

然后在 client.js:

    let express = require('express');
    let app = express();
    let path = require('path');
    const rp = require("request-promise");

    //STORE PATH for local JSON files on variables
    let guest = require('./public/data/Companies');
    let hotel = require('./public/data/Guests');

    app.set("port", process.env.PORT || 5000);

    //GET JSON
    //Question: Is it okay to pass uri:guest
    app.get('/data', function(req, res) {
        Promise.all([rp({uri: guest, json: true}), rp({uri: hotel, json: true})]).then(function([hotels, guests]) {
            //res.json({hotels, guests});
            res.send({hotels, guests});
            console.log(hotels, guests);
        }).catch(function(err) {
            console.log(err);
            res.status(500).end();
        });
    });


    //CATCHALL
    app.get("/*", function(req,res){
        let file = req.params[0] || "/views/index.html";
        res.sendFile(path.join(__dirname, "/public/", file));
    });

    //SET PORT
    app.listen(app.get("port"), function(){
        console.log("Listening on port: " , app.get("port"));
    });

2 个答案:

答案 0 :(得分:2)

为什么使用请求获取数据?为什么不使用Node.js(fs)中的文件系统模块来获取数据?当您致电rp()时,您应该传递绝对URI而不是本地路径。

要在代码中使用它,您需要&#34; promisify&#34; readFile函数:

let readFileAsAPromise = function(filename){
  return new Promise(function(resolve, reject) {
    fs.readFile(filename, (data, err) => {
      if(err) reject(err);
      resolve(data)
    })
  })
}

然后你可以Promise.all

答案 1 :(得分:1)

为什么不简单地返回变量?

我的意思是:

app.get('/data', function(req, res) {
    res.send({hotels, guests}); 
});