Heroku error module not found 'json-server' - node.js

I want to deploy my server on Heroku, but on Heroku build it says this:
The app works fine locally, but somehow it crashes on the Heroku server.
This is the file structure
This is the code for server.js
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('data.json');
const port = process.env.PORT || 4000;
server.use(router);
server.listen(port);
This is package.json
{
"name": "server",
"version": "1.0.0",
"description": "json-server",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "npm install && node server.js"
},
"author": "japsuchiha",
"license": "ISC",
"dependencies": {
"core-util-is": "^1.0.2"
},
"devDependencies": {
"json-server": "^0.15.1"
}
}

Pure guess, but I don't think heroku is installing json-server since it's listed under devDependencies

Related

Unable to load the simple nodejs application on Windows - How to troubleshoot?

I have written the below code
`use strict`;
const express = require(`express`);
//constansts
const PORT = 7777;
const HOST = `0.0.0.0`;
//App
const app = express();
app.get(`/`,(req,res) => {
res.send(`hello from nodejs`)
});
app.listen(PORT,HOST);
console.log(`Running on http://${HOST}:${PORT}`);
Outcome
This is my package.json
{
"name": "samplenodejsserver",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
UPDATE
It's working at HTTP ://127.0.0.1:7777
But not at HTTP ://0.0.0.0:7777
The IP 0.0.0.0 is just a wildcard which tells the server to listen at any IP, but you still have to enter a IP which points to your PC.

Heroku : Application Error When I try to load the page [Node.js + Express]

index.js
// create an express app
const express = require("express");
const app = express();
// use the express-static middleware
app.use(express.static("public"));
// define the first route
app.get("/", function (req, res) {
res.send("<h1>Hello World!</h1>");
});
// start the server listening for requests
app.listen(process.env.PORT || 3000, () => console.log("Server is running..."));
package.json
{
"name": "SimpleApp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
},
"engines": {
"node": "10.x",
"npm": "*"
}
}
Procfile
web: echo "I don't want a web process"
service: npm start
I have deployed it in heroku.
And the logs are showing as below
2021-06-22T13:16:11.346614+00:00 app[service.1]: ------------------------------------------------------------------
2021-06-22T13:16:11.371025+00:00 app[service.1]: Server is running...
But i am getting application error when i try to load the page.
It is working fine in local
Your web dyno maybe turned off by default.You need to turn it on inorder to run your heroku app
When declaring the middleware check whether that directory you have set is correct
app.use(express.static("public"));
If not then use __dirname to concatinate the correct directory like so
const public = path.join(__dirname, "../public")
then
app.use(express.static(public));

Express app deployed successfully on Azure but still nothing work

Azure deployed this app with successfully flag, but homepage response with 500 status
index.js:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello!");
});
app.listen(3000, () => console.log("Hwllo!"));
package.json:
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
Have you tried setting the variable process.env.PORT for handling the named pipe port in Azure App Service. See Listen additional port Microsoft Azure Nodejs.
If it does not solve your issue, try to go through KUDU console and look for the particular erros.

Elastic Beanstalk: Deploy Nodejs status Degraded Following services are not running: web

I just use eb deploy and also tried upload with zip, the elatic beanstalk environment show "degraded".
The log when I click in to see is
Overall
Degraded
Impaired services on all instances.
Severe
Following services are not running: web.
My app.js file:
const express = require('express');
const app = express();
app.listen(3000, () => {
console.log("Sever console log.")
});
package.json content
{
"name": "project_api",
"version": "1.0.0",
"engines": {
"node": "12.18.3"
},
"description": "the server side of the api",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Businsoft Limited",
"license": "ISC",
"dependencies": {
"dropbox": "^5.2.1",
"express": "^4.17.1",
"isomorphic-fetch": "^2.2.1",
"nodemon": "^2.0.4"
}
}
I think this is the simpliest start with Elastic Beanstalk, but somehow it fails. Any idea to solve it?
After debug for a while, I managed to figure out the issue.
In package.json
I need to remove this line:
"main": "app.js",
And the add the "start" in the "scripts" like this:
"scripts":
"start": "node app.js"
And then update the
app.listen(3000, () => {
console.log("Sever console log.")
});
to
const port = process.env.port || 3000;
app.listen(port, () => {
console.log("Sever console log.")
});
And then go to AWS Console > Elastic Beanstalk's environment > Configuration > Software Edit > add a properties at Environment properties
Name port Value 8080
Finally reupload the source code, and it works.

npm start does nothing while the command works properly when using NodeJS with Express

UPDATE:
I had nvm for windows installed and forgot about it. It was projecting the contents of its node installation to the program files folder.
ORIGINAL:
So I have a very simple project copied from freecodecamp
index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, () => console.log('Example app listening on port 3000!'));
package.json
{
"name": "test-app", "version": "1.0.0", "description": "", "main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"keywords": [], "author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
Running node index.js starts the server and operates as expected, but if I run npm start it just returns:
> test-app#1.0.0 start D:\temp\test-app
> node index.js
Microsoft Windows [Version 10.0.17134.885]
(c) 2018 Microsoft Corporation. All rights reserved.
and exits out.
I would expect that npm start does the same thing as node index.js since it uses the same command, as described here.
What did I do wrong?
I have tried:
running npm cache clean --force
removing node_modules and running npm install
removing all traces of node and reinstalling a different version
EDIT: project structure looks like
D:\temp\test-app
├── node_modules
├── index.js
├── package-lock.json
└── package.json
Just rename your index.js file to server.js and remove the "start": script entirely. Then npm start will work normally.
{
"name": "test-app", "version": "1.0.0", "description": "", "main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [], "author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
Please try with npm run start instead of npm start in the same directory as your package.json

Resources