2017-10-01 1 views
-1

私はローカルプロジェクトディレクトリフォルダーにローカルに存在する2つのJSONデータファイルをリクエストすると約束しています。 すなわち: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? @Olivier Liechti – tonkihonks13

関連する問題