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


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}`)
})

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

我正在尝试部署json服务器。在做post请求时,我得到了这个错误。

作为一个起点,您不应该在生产环境中使用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)

相关内容

最新更新