我完全是nodejs的新手。尝试在一个服务中读取json文件,然后在其他服务中使用它。 它告诉我我的服务未定义。我究竟做错了什么 ? 预先感谢!
JsonService
'use strict';
const fs = require('fs');
exports.getJobs = ()=> {
fs.readFile('./common/data/jobs.json', (err, data) => {
if (err) throw err;
if (data) {
return new Promise(function (resolve, reject) {
resolve(data);
});
}
});
}
和JobsService
const JsonService = require('../../common/services/json.service');
exports.list = () => {
let jobs;
JsonService.getJobs().then((data)=>{
jobs = data;
return new Promise((resolve, reject) => {
if(jobs){
resolve(jobs);
}else{
reject(jobs)
}
});
});
};
答案 0 :(得分:3)
如果您只需要读取json文件,则只需完成
const jobs = require("./common/data/jobs.json");
希望这会有所帮助。
由于试图将其用作Promise但getJobs没有返回Promise之所以无法运行代码的原因。您需要将其包装在promise中,然后返回。这就是方法
const fs = require("fs");
exports.getJobs = () => {
return new Promise((resolve, reject) => {
fs.readFile("./common/data/jobs.json", (err, data) => {
if (err) {
reject(err);
}
if (data) {
resolve(data);
}
});
});
};
并像这样使用它
const JsonService = require("../../common/services/json.service");
exports.list = () => {
let jobs;
JsonService.getJobs().then(data => {
console.log(data);
});
};
无需在此处将其包装在promise中。
但是在您的情况下,仅需要按我上面提到的那样工作即可。