为什么在走路线时没有得到数据?

时间:2018-11-12 14:50:37

标签: javascript node.js express ecmascript-6 server

当我转到路由'/gallery'时,我想从文件“ posts.json”接收数据。 我使用fs模块从文件中获取数据,并使用read()方法从文件“ posts.json”中读取数据。

结果是,我收到错误消息:“ ReferenceError:未定义fs”

使用'/gallery'模块浏览路线fs时如何实现文件“ posts.json”中的显示数据?

app.js:

const express = require('express');
const  Database =  require('./db');

const app = express();
const port = 3000;
const  db = new Database();

app.use(express.json());

app.get('/gallery', (req, res) => {
    const items = db.read();
    res.send(items);
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}!`);
});

db.js:

class Database {

    constructor(){
        this.fs = require('fs');
        this.pictures = [];
    }

    read() {
        fs.readFile('./posts.json', (err, data)=> {
            if(err) {
                throw err;
            }else {
               return this.pictures = data;
            }
        });
    }
}

module.exports = Database;

2 个答案:

答案 0 :(得分:2)

使用:

您的this.fs.readFile函数中的

read,而不是fs.readFile。由于您在构造函数中需要它,并将其分配给this.fs;

或在require开头的fs模块db.js

const fs = require('fs');

并在不使用this的情况下使用它。

答案 1 :(得分:1)

当您尝试访问在services.AddHttpContextAccessor(); 构造函数中初始化的this属性时,您忘记写fs关键字。

您使用它来访问this.fs = require('fs')属性,但没有访问pictures