Почему мой API не читает локальный файл JSON?(NodeJS) - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь получить доступ к файлу JSON, хранящемуся локально в моей корневой папке API, с помощью запроса GET, но он продолжает ожидать ответа хоста ресурсом и никогда не завершается, если только я не запрашиваю несуществующий элемент.

    import express from 'express'
    import movies from './movies.json'

    const app = express()
    const port = process.env.PORT || '3000'

    app.get('/', (req, res) => {
     res.send('Welcome to Vidly!')
    })

    app.get('/api/movies', (req, res) => {
     res.send(movies)
    })

    app.get('/api/movies/:id', (req, res) => {
     let movie
     for (let i = 0; i < movies.length; i++)
      if(movies[i].id === parseInt(req.params.id))
       movie = movies[i]

     if (!movie) {
      return res.status(404).send(`Movie ${req.params.id} not found.`)  
     }

     return movie
   })

   app.listen(port, () => {
    console.log(`Listening on http://localhost:${port}`)
   })

Ссылка на movies.json http://dontpad.com/movies.json

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Вам нужно реализовать статический обработчик файлов https://expressjs.com/en/resources/middleware/serve-static.html для обслуживания JSON на стороне клиента.

0 голосов
/ 14 октября 2018

Я думаю, у вас есть три варианта:

A.Переименуйте movies.json в movies.js, а затем экспортируйте код следующим образом

// movies.js
export default [
    ...
]

// index.js
import movies from './movies'

B.Поскольку вы явно используете babel, вы можете попробовать плагин inline-json-import попробовать

C.Используйте файловую систему для очистки файла JSON

const fs = require('fs');
const movies = JSON.parse(fs.readFileSync(`${__dirname}/movies`, 'utf8'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...