node.js - NodeJS 服务函数未定义

标签 node.js promise

我完全是nodejs的新手。尝试在服务中读取json文件,然后在其他服务中使用它。 它告诉我我的服务未定义。我究竟做错了什么 ? 预先感谢!

Json服务

'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)
            }
        });
   });


};

最佳答案

如果你只需要读取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 中。

但在你的情况下,简单的要求应该像我上面提到的那样工作。

关于node.js - NodeJS 服务函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60465772/

相关文章:

node.js - 从环回登录 API 获取自定义响应

node.js - Bot Framework 机器人在模拟器中工作,但在部署的机器人上获取 Microsoft.Bot.ChannelConnector.BotAPI.ThrowOnFailedStatusCode

node.js - 在 debian 中安装 Node js 时出错

javascript - 奇怪的 HTML 行为

node.js - .then 之后逻辑不起作用

node.js - 使用 validate.js 解决所有异步 promise

Javascript、Promises 和 setTimeout

node.js - 将 Q 与 Node-Mysql 结合使用

javascript - 有前途的听众

javascript - 有没有办法知道链接/脚本是否仍在挂起或失败