2017-10-01 1 views
-1

로컬 프로젝트 디렉토리 폴더에 로컬로 존재하는 두 개의 JSON 데이터 파일을 요청하는 데 request-promise를 사용하고 있습니다. 예 :NodeJS - '오류 : 잘못된 URI'/ ''

enter image description here

그러나, 나는 500 내부 서버 오류가 발생하고는 뷰에 데이터를 내 노드 콘솔 출력을 통과 할 때 'Error: Invalid URI "/"',

아래를 참조하십시오 :

server.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")); 
    }); 

다음 client.js에 :

$(function() { 
    $.ajax({ 
     type: "GET", 
     url: "/data", 
     success: function (res) { 
      console.log(res); 
     } 
    }); 
}); 

답변

1

단순히 변수를 반환하지 않는 이유는 무엇입니까?

는 말은 :

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

왜 당신이 데이터를 얻을 요청을 사용합니까? Node.js (fs)의 파일 시스템 모듈을 사용하여 데이터를 가져 오지 않는 이유는 무엇입니까? rp()에 전화 할 때는 로컬 경로가 아닌 절대 URI를 전달해야합니다.

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

당신은 당신 Promise.all 할 수 있습니다 코드에서 사용하려면

, 당신은 ReadFile을 "기능을 promisify"할 필요가있다.

+0

CLD는 JSON 파일 모두를 얻기 위해 (FS)를 사용하는 예를 게시 개 pls? @ 올리브 리에티 – tonkihonks13

관련 문제