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 服务器。在执行发布请求时,我收到此错误。
以您不应该在生产环境中使用像 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)
仔细阅读问题。具体来说,这个问题要问什么?确保你的答案能够提供这一点——或者一个可行的替代方案。答案可以是“不要这样做”,但也应该包括“尝试这个”。任何能让提问者朝着正确方向前进的答案都是有帮助的,但请尝试在你的答案中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释更好。