Can't POST in heroku.. but GET yes can. why ?
Heroku doesn't allow to write to a file. You need to enable an addon.
But currently json-server doesn't support other storages than files.
Alternatively, you could deploy to a VPS or another PAAS that would support file writing. I don't know if it's possible with now.sh but it's worth a try.
On Heroku, you could also use json-server with in-memory storage:
var jsonServer = require('json-server')
var server = jsonServer.create()
var db = {
posts: [],
comments: []
}
var router = jsonServer.router(db)
var middlewares = jsonServer.defaults()
server.use(middlewares)
server.use(router)
server.listen(3000, function () {
console.log('JSON Server is running')
})
POST would be possible, but that would mean that data would be lost every time the dyno is restarted (not a problem if it's just for mocking).
It would be possible to add support for other storages but it would require some development.
great,... thank you for answer, i use this code in server.js and work to POST, PUT and DELETE in herokuapp . .
var jsonServer = require('json-server');
var server = jsonServer.create();
var router = jsonServer.router('db.json');
var middlewares = jsonServer.defaults();
var port = Number(process.env.PORT || 3000);
server.use(middlewares);
server.use(router);
server.listen(port, function () {
console.log('JSON Server is running')
});
my herokuapp : https://person-007.herokuapp.com/person
thanks... you are amazing. .
You're welcome :)
@typicode
/ @herudi
I'm getting below error as part of http response when i do POST in Heroku. Could u pls help me.
Actually it is successfully storing in db.json file. But I'm getting this below error response when i do POST
ReferenceError: Promise is not defined
at Object.write (/app/node_modules/json-server/node_modules/lowdb/lib/file-async.js:15:16)
at LodashWrapper.db.write (/app/node_modules/json-server/node_modules/lowdb/lib/_index.js:57:26)
at persist (/app/node_modules/json-server/node_modules/lowdb/lib/_index.js:70:12)
at LodashWrapper.
<anonymous> (/app/node_modules/json-server/node_modules/lowdb/lib/_index.js:78:5)
at apply (/app/node_modules/json-server/node_modules/lodash/lodash.js:480:27)
at LodashWrapper.wrapper [as value] (/app/node_modules/json-server/node_modules/lodash/lodash.js:5330:16)
at create (/app/node_modules/json-server/src/server/router/plural.js:241:8)
at Layer.handle [as handle_request] (/app/node_modules/json-server/node_modules/express/lib/router/layer.js:95:5)
at next (/app/node_modules/json-server/node_modules/express/lib/router/route.js:131:13)
at next (/app/node_modules/json-server/node_modules/express/lib/router/route.js:125:14)
@herudi I followed the link you added to your solution above, but it's returning just an empty array
Most helpful comment
great,... thank you for answer, i use this code in server.js and work to POST, PUT and DELETE in herokuapp . .
my herokuapp : https://person-007.herokuapp.com/person
thanks... you are amazing. .