Nodejs Express server Cannot find module 'pdf-fill-form' - node.js

I'm really new to NodeJS and ExpressJS.
This is nodeJS RestAPI service.
In my project, I have to populate a PDF form field, To do that I wanted to get help from a nodejs library "pdf-fill-form" link ->https://www.npmjs.com/package/pdf-fill-form
I ran 'npm install pdf-fill-form' on my project folder terminal
Import it as in the example -> const pdfFillForm = require('pdf-fill-form');
But it throws an error
internal/modules/cjs/loader.js:796
throw err;
^
Error: Cannot find module 'pdf-fill-form'
I have tried multiple libraries same issue came 'Cannot find module "Lib Name"'
Can someone who is an expert on Node JS help me?
Probably I have done something wrong, I did search for solutions but could not find any.
My Package json
{
"name": "pemsbackend",
"version": "1.0.0",
"description": "TB",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"author": "MyTest TB",
"license": "ISC",
"dependencies": {
"#hapi/joi": "^17.1.0",
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.9.2"
},
"devDependencies": {
"nodemon": "^2.0.2"
}
}
Thank you.

pdf-fill-form has other dependencies to be installed in you're system before installing it. Go through installing guide mentioned int it's repo and then try installing it.

Related

Error - Can't find Jest - Describe , It ect

I had this problem going on for weeks and today I decided to investigate this matter. What I have noticed is that if I create a brand new project and install #types/jest, jest, supertest and just make a test folder with a dummy test file like dummy.test.js, I'm able to get describe, it ect ect.
when I compare this package.json file with my microservices package.json file, the only difference is that I have few dependencies in my microservices package.json.
here you can see the difference:
new node project
{
"name": "jest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "NODE_ENV=test jest --watchAll --verbose --coverage"
},
"author": "",
"license": "ISC",
"devDependencies": {
"#types/jest": "^27.4.1",
"jest": "^27.5.1",
"supertest": "^6.2.2"
}
}
and this is my microservices package.json file:
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "NODE_ENV=development nodemon src/index.js -watch",
"test": "NODE_ENV=test jest --watchAll --verbose --coverage"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"bcrypt": "^5.0.1",
"config": "^3.3.6",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"dotenv": "^16.0.0",
"express": "^4.17.3",
"express-async-errors": "^3.1.1",
"helmet": "^3.21.1",
"http-status-codes": "^2.2.0",
"joi": "^17.6.0",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.21",
"moment": "^2.29.2",
"mongoose": "^6.2.10"
},
"devDependencies": {
"#types/jest": "^27.4.1",
"jest": "^27.5.1",
"supertest": "^6.2.2"
}
}
Honestly I'm not understanding what is going on here!
In my new project, I don't need to configure a tsconfig.json for this matter, so I don't see the logic with this problem.
I would appreciate any explanation and maybe with an example to this matter so I can understand why can't see jest properties in my microservices project and in my new project the properties appears without any problems.
After searching what is tsconfig.json and what it does, I finally understood that I had to include it in my microservices project so I can tell the typescript compiler of what file it should be aware of.
Because I have structure all my files in a src folder in the root, I had to tell the compiler to include ["./src/**/*] and exclude["./node_modules"] because if I don't exclude it, we will issue a compiling performance and finally had to make sure to inform the compiler to include #types/jest without being referenced in a source file, in my case: "types": ["jest"] and allowJs to true so my javascript files can be part of my program. This had done the trick.
Now I must figure out why when building a new project, I don't receive these errors without tsconfig.json file. If some knows the answer, I would appreciate it!!

NPM version discrepancy between main version and cpanel version

When running npm-version on my local server/laptop I receive 7.5.6
However, when running on cpanel terminal -- I receive
[~]# /opt/cpanel/ea-nodejs10/bin/npm --version
6.14.11
And this 6.14.11 is after I ran
[~]# /opt/cpanel/ea-nodejs10/bin/npm install --latest version -g
Which I thought would update it to the 7.5.6 as I used the same command to update the one on my computer as well.
In all I'm having trouble deploying my webapp on bluehost via cpanel. Even though the app is registered with the application manager -- and the Ensure Dependencies part came out done and successful. And the git repo is cloned and deployed with no errors.
Would this discrepancy be causing the app not to launch?
I can't understand why it isn't deploying properly, so I was thinking there may be something with the package.json or (package-lock.json) -- ei - could the versions in such bet preventing deployment due to discrepancies.
Would love some help, been trying to get this deployed for days!
my package.json
{
"name": "vandenbergdevelopment",
"version": "1.0.0",
"description": "DeltaDesignServer",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
"author": "J Vandenberg",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"ejs": "^3.1.6",
"express": "^4.17.1",
"firebase-tools": "^9.5.0",
"hover.css": "^2.3.2",
"nodemailer": "^6.4.18",
"nodemailer-mailgun-transport": "^2.0.2",
"version": "^0.0.4"
}
}
The top bit to the lock.json
"": {
"name": "vandenbergdevelopment",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"version": "^0.0.4",
"body-parser": "^1.19.0",
"ejs": "^3.1.6",
"express": "^4.17.1",
"firebase-tools": "^9.5.0",
"hover.css": "^2.3.2",
"nodemailer": "^6.4.18",
"nodemailer-mailgun-transport": "^2.0.2"
}
},
Thank you!

NodeJS API deployement on AWS with Elastic Beanstalk

I'm looking for deploying my NodeJS API with AWS.
I tried to use Elastic Beanstalk but I always get this issue:
Image of the error I get
There is my package.json
{
"name": "",
"scripts": {
"start": "node server.js"
},
"version": "0.0.0",
"private": true,
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
"express": "^4.16.4",
"hammerjs": "^2.0.8",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.4.20",
"mongoose-unique-validator": "^2.0.2",
"multer": "^1.4.1",
"tslib": "^1.9.0"
}
}
And I also have a nodecommand.config into a folder named ".ebextensions"
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
Also, is Elastic Beanstalk the best way to deploy my API ?
Thx for the answers !
Based on the comments.
The primary issue was using rar for deployment packaged instead of zip. After fixing that, config files had to be adjusted to work with Amazon Liunx 2.

After deploying to Azure Web apps, some modules are not automatically installed

After deploying to Azure Web apps, some modules are not automatically installed.
After deploying, the following error is output.
Error: Can not find module 'Cookie-parser'
At that time, I run 'npm install cookie-parser --save'.
In the package.json, the dependencies of the cookie-parser is surely saved.
{
"name": "solo",
"description": "demo",
"version": "0.0.1",
"private": true,
"license": "MIT",
"author": "lostsupervisor",
"engines": {
"node": ">=6.9.1"
},
"dependencies": {
"body-parser": "^1.17.2",
"cookie-parser": "^1.4.3",
"ejs": "^2.5.6",
"express": "^4.15.4",
"express-session": "^1.15.4",
"mssql": "^4.0.4",
"tedious": "^2.0.0"
},
"scripts": {
"start": "node index.js"
}
}
However, the same event occur after deploying next time.
Could you teach me a solution?
You are using Cookie-parser which is wrong.
In NPM modules while downloading npm upper and lower cases matter. Change it to cookie-parser, upper C is causing the problem.
It was caused by package-lock.json being not being pushed.
I solved it by pushing it.
Thank you very much.

MarkLogic npm issues

I'm having issue while I'm installing MarkLogic. When I execute the command
npm install marklogic --save
I'm getting an error. It says
Refusing to install marklogic as a dependency of itself
package.json:
{
"name": "marklogic",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.15.1",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"express": "~4.13.4",
"jade": "~1.11.0",
"morgan": "~1.7.0",
"serve-favicon": "~2.3.0"
}
}
Checking -- if you cloned the MarkLogic Node.js API project, then ran the npm install command that you show above, I'd expect to see this error. Is that what's happening?
Edit: elevating #grtjn's point from the comment: When selecting a name for your package, it has to be unique. "marklogic" is the name of an existing package, and therefore conflicted with the same name used for the package you were building.

Resources