Json-server: Heroku POST

Created on 27 May 2016  路  5Comments  路  Source: typicode/json-server

Can't POST in heroku.. but GET yes can. why ?

Most helpful comment

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. .

All 5 comments

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

Was this page helpful?
0 / 5 - 0 ratings

Related issues

sboudouk picture sboudouk  路  3Comments

strom picture strom  路  4Comments

Isanderthul picture Isanderthul  路  3Comments

bahmutov picture bahmutov  路  3Comments

TXRRNT picture TXRRNT  路  4Comments