如何解决错误EROFS:只读文件系统,打开'/var/task/db.json'?

问题描述 投票:0回答:2
const jsonServer = require('json-server')
const cors = require('cors')
const path = require('path')

const server = jsonServer.create()
const router = jsonServer.router(path.join(__dirname, 'db.json'))
const middlewares = jsonServer.defaults()

server.use(cors())
server.use(jsonServer.bodyParser)
server.use(middlewares)
server.use(router)

const PORT = 8000

server.listen(PORT, () => {
  console.log(`JSON Server is running on http://localhost:${PORT}`)
})

我使用 cyclo.sh 进行部署。如何解决这个错误?

我试图部署一个 json 服务器。在执行发布请求时,我收到此错误。

javascript node.js httprequest json-server
2个回答
0
投票

以您不应该在生产环境中使用像 json-server 这样的工具作为起点,我可以理解您可能会将其用于演示目的。在这种情况下,有一些无服务器解决方案会阻止您的代码以写入模式打开文件,这就是

jsonServer.router(...)
行执行失败的原因。

如果您不关心请求更新的

db.json
文件(因为无论如何,您的部署解决方案似乎不允许这样做),您可以只使用 js 对象,它可以在内存中修改(但是,当然,json 文件仍然保持不变)。所以,而不是:

const router = jsonServer.router(path.join(__dirname, 'db.json'))

尝试使用类似的东西:

const fs = require('fs')
const db = JSON.parse(fs.readFileSync(path.join(__dirname, 'db.json')))
const router = jsonServer.router(db)

0
投票

仔细阅读问题。具体来说,这个问题要问什么?确保你的答案能够提供这一点——或者一个可行的替代方案。答案可以是“不要这样做”,但也应该包括“尝试这个”。任何能让提问者朝着正确方向前进的答案都是有帮助的,但请尝试在你的答案中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释更好。

© www.soinside.com 2019 - 2024. All rights reserved.