使用request-promise获取本地json文件

时间:2015-06-15 17:38:44

标签: javascript json angularjs node.js express

我正在创建一个node / express应用程序,并使用npm request-promise查询测试json文件。节点在我的<title>标记中吐出以下错误:

错误:<title>Invalid URI "../testJSON/user.json"</title>

我相信我的路径是正确的,所以我不确定为什么它是无效的URI。

我还提供了相同问题的整个项目路径URI:

return rp('http://localhost:3000/app/testJSON/user.json');

用户服务:

module.exports = {

getUserData: function(){
        var options = {
            uri : '../testJSON/user.json',
            method : 'GET'
        }
        return rp(options);
    }
}

用户控制器:

var User = require('../services/User.service');
User.getUserData()
    .then(function(data){
        res.render('pages/userdata', {
            title: 'User Data',
            content: JSON.parse(data)
        });
    })
    .catch(function(err){
        console.log(err);
    });

径处理:

用户服务:projectroot / app / services / userService.js

用户json文件:projectroot / app / testJSON / user.json

更新:尝试使用节点fs来获取本地文件

fs = require('fs');

module.exports.index = function (req, res) {
    fs.readFile('../testJSON/user.json', 'utf8', function (err,data) {
      if (err) {
          return console.log(err);
      }
      res.render('pages/user', {
          title: 'User',
          content: JSON.parse(data)
      });
  });
  ...

节点错误:

  

{[错误:ENOENT,打开'../testJSON/user.json']错误:-2,代码:   'ENOENT',路径:'../ testJSON/user.json'}

1 个答案:

答案 0 :(得分:2)

相对路径(从.././开始)相对于当前工作目录。如果要读取相对于当前JS源文件的文件,则需要在路径前加__dirname,这是当前JS源文件所在的目录:

fs.readFile(__dirname + '/../testJSON/user.json', ...);

或者更精细(但可能更正确)的方式:

var path = require('path);
...
fs.readFile(path.join(__dirname, '../testJSON/user.json'), ...);