我正在创建一个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'}
答案 0 :(得分:2)
相对路径(从../
或./
开始)相对于当前工作目录。如果要读取相对于当前JS源文件的文件,则需要在路径前加__dirname
,这是当前JS源文件所在的目录:
fs.readFile(__dirname + '/../testJSON/user.json', ...);
或者更精细(但可能更正确)的方式:
var path = require('path);
...
fs.readFile(path.join(__dirname, '../testJSON/user.json'), ...);