google cloud platform: "Can't find module firebase-admin" - node.js

I am trying to deploy my node.js server to google cloud platform.
It works perfectly when I use it locally (run it with npm start of node app.js).
But when I try to deploy it (gcloud deploy), it failed, and in the Log:
Error: Cannot find module 'firebase-admin' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object. (/app/app.js:28:16) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3)
in app.js i use simply:
var firebase = require("firebase-admin");
and this is my package.json file:
{
"name": "Talk2Me-server",
"version": "1.0.3",
"main: "app.js",
"description": "Talk2Me app server",
"private": true,
"license": "Apache-2.0",
"scripts": {
"start": "node app.js"
},
"repository": {
"type": "git",
"url": "https://github.com/guytsur/Talk2Me.git"
},
"author": "Talk2Me Team,",
"contributors": [
"Guy Tsur<guytsur7#google.com>"
],
"cloud-repo-tools": {
"requiresKeyFile": true,
"requiresProjectId": true
},
"dependencies": {
"express": "~4.15.2",
"request": "^2.81.0",
"firebase-admin": "^4.1.2",
"firebase": "^2.4.2"
},
"devDependencies": {
"#google-cloud/nodejs-repo-tools": "1.4.16",
"ava": "~0.21.0",
"supertest": "~3.0.0",
"tap-dot": "~1.0.5"
},
"engines": {
"node": ">=4.3.2"
}
}
Thanks!

Ok i managed to solve it,
first thing i reinstalled the packages using
npm install --save firebase-admin
and than i also did a little hack, i added to the package file:
"scripts": {
"start": "npm install firebase-admin; node app.js"
},
which i guess isn't the best of practice, but it worked.

Related

npm not start. Error: Cannot find module 'webpack-cli/bin/config-yargs'

when I give npm start comand its show
internal/modules/cjs/loader.js:883
throw err:
Error: Cannot finde module'webpack-cli/bin/config-yargs'
plz help me to solve this problem
use os : windows 10
node version is v14.16.1
> chapter15.1#1.0.0 start
> webpack-dev-server
internal/modules/cjs/loader.js:883
throw err;
^
Error: Cannot find module 'webpack-cli/bin/config-yargs'
Require stack:
- C:\Users\user\Desktop\JS full Course\chapter15.1\node_modules\webpack-dev-server\bin\webpack-dev-server.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (C:\Users\user\Desktop\JS full Course\chapter15.1\node_modules\webpack-dev-server\bin\webpack-dev-server.js:65:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\user\\Desktop\\JS full Course\\chapter15.1\\node_modules\\webpack-dev-server\\bin\\webpack-dev-server.js'
]
}
webpack version 5.37.1
webpack-cli version 4.7.0
webpack-dev-server version 3.11.2
Package.json file is
{
"name": "chapter15.1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"#babel/cli": "^7.14.3",
"#babel/core": "^7.14.3",
"#babel/node": "^7.14.2",
"#babel/polyfill": "^7.12.1",
"#babel/preset-env": "^7.14.2",
"#babel/register": "^7.13.16",
"babel-loader": "^8.2.2",
"babel-register": "^6.26.0",
"html-webpack-plugin": "^5.3.1",
"webpack": "^5.37.1",
"webpack-cli": "^4.7.0",
"webpack-dev-server": "^3.11.2"
}
}
In the Package.json file add a serve script like below and remove the start script. See the documentation.
{
"scripts": {
"serve": "webpack serve"
},
Then Run this command in your terminal.
npm run serve

Error : Cannot find Module 'cors' in fabric 1.2

I was getting Error: Cannot find module 'fabric-client'error then manually I ran 'npm install fabric-client#1.0.5' inside node_module then I am getting below error
[root#ip-172-31-61-27 controller]# node app.js module.js:538
throw err;
^
Error: Cannot find module 'cors'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/ec2-user/AWSNodeApp/controller/app.js:27:11)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
We already have an entry of 'cors' in the package.json file but still it given above error.
Below is the package.json file :-
{
"name": "awsnodeapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"aws-sdk": "^2.538.0",
"body-parser": "^1.17.1",
"cors": "^2.8.3",
"express": "^4.15.2",
"express-session": "^1.15.2",
"fabric-ca-client": "1.3.0",
"fabric-client": "1.3.0",
"fs-extra": "^2.0.0",
"log4js": "^3.0.6",
"uuid": "^3.3.2",
"ws": "^6.1.0"
}
}
Since your app.js requires cors module, you need to install and add to package.json.
npm install cors --save
You can find the answer from this old post: Error: Cannot find module 'cors'

How do you get express to work on Heroku app?

I have a app on Heroku and when I run node server.js it's throwing a error and saying Error: Cannot find module 'express'.
I've cleared the npm cache, rebuilt the app, checked the package.json & dependencies. Nothing much is working for me and I'm just looking for solutions now.
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
at Function.Module._load (internal/modules/cjs/loader.js:508:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/app/server.js:1:79)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
Trying to get the app to start.
Here's the package.json
{
"name": "SCOGEAgent",
"version": "0.0.0",
"description": "A simple Blockstack app",
"main": "index",
"scripts": {
"browserify": "browserify requires.js -o public/bundle.js",
"start": "run browserify & node server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/blockstack/hello-blockstack.git"
},
"author": "",
"license": "MIT",
"bugs": {
"url": "https://github.com/blockstack/hello-blockstack/issues"
},
"homepage": "https://github.com/blockstack/hello-blockstack#readme",
"devDependencies": {
"browserify": "^14.1.0",
"express": "^4.16.4",
"opn": "^4.0.2"
},
"dependencies": {
"browserify": "^14.1.0",
"express": "^4.16.4",
"opn": "^4.0.2",
"#types/node": "^11.13.0",
"blockstack": "^18.0.4",
"express-ws": "^4.0.0",
"json-pointer": "^0.6.0",
"react-router-dom": "^5.0.0",
"socket.io": "^2.2.0",
"socket.io-client": "^2.2.0",
"websocket-stream": "^5.5.0"
}
}
Express should be in your dependencies not devDependencies. Here's how you know where to put your third-party dependencies.
Does the app need the dependency to run? Put it in dependencies
Does the app need the dependency to build, test, lint, or any other
task for development? Put it in devDependencies.
The only time this gets fuzzy is when you need to build the project before you run it. Then some of your build dependencies might be placed in dependencies instead of devDependencies. I'm sure there is a more professional way to manage this but that's how I do it.

log4js is not working on gae with nodejs

I am trying to deploy node project on google app engine using
gcloud app deploy
But this is throwing error
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
module.js:471
throw err;
^
Error: Cannot find module 'log4js'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/app/server.js:38:14)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
The same project is working on local machine. Here is my package.json
{
"name": "myapp",
"version": "1.0.0",
"description": "myapp",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": ""
},
"author": "",
"license": "ISC",
"bugs": {
"url": ""
},
"homepage": "",
"dependencies": {
"body-parser": "^1.15.0",
"connect-timeout": "^1.8.0",
"express": "^4.13.4",
"generic-pool": "^2.4.2",
"multer": "^1.2.0",
"mysql": "^2.10.2",
"requestify": "^0.1.17"
}
}
What is the issue?
log4js is missing in your dependencies.
npm install log4js --save to add it to your package.json.

how to start global npm module with harmony flag

I wrote a npm module which can be installed globally dm-npm.
I like to use co in that module.
How can i told the module that it runs with the harmony flag when started globally?
Here is the package.json:
{
"name": "dm-npm",
"version": "0.0.3",
"description": "npm helper",
"main": "index.js",
"scripts": {
"test": "mocha --reporter nyan",
"start": "node --harmony ./bin/dm-npm"
},
"repository": {
"type": "git",
"url": "https://github.com/divramod/dm-npm.git"
},
"keywords": [
"npm",
"template"
],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/divramod/dm-npm/issues"
},
"homepage": "https://github.com/divramod/dm-npm",
"devDependencies": {
"chai": "^2.1.0",
"mocha": "^2.1.0"
},
"dependencies": {
"co": "^4.4.0",
"co-prompt": "^1.0.0",
"colors": "~1.0.3",
"shelljs": "^0.3.0"
},
"bin": {
"dmnpm": "./bin/dm-npm"
}
}
i got the following error message when running with a co function:
> $ dmnpm init
/usr/local/lib/node_modules/dm-npm/index.js:152
co(function*() {
^
SyntaxError: Unexpected token *
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/usr/local/lib/node_modules/dm-npm/bin/dm-npm:3:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
it is caused by
co(function*() {
var projectName =
yield prompt('project name: '.blue);
process.stdin.pause();
});
#!/usr/bin/env node --harmony
on the top of script works for me, in your case in /bin/dm-npm

Resources