I just started messing with node.js and I'm already having problems, I have no idea how to even start debugging this..
> npm install express jade socket.io
module.js:333
throw err;
^
Error: Cannot find module 'cookie-jar'
at Function.Module._resolveFilename (module.js:331:15)
at Function.Module._load (module.js:273:25)
at Module.require (module.js:357:17)
at require (module.js:373:17)
at Object.<anonymous> (/usr/local/Cellar/node/0.10.24/lib/node_modules/npm/node_modules/request/index.js:15:14)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:349:32)
at Function.Module._load (module.js:305:12)
at Module.require (module.js:357:17)
If you want to just use npm just install each package with a separate command
npm install express
npm install jade
npm install socket.io
On my computer it works.
My suggestion is to use the "package.json" file. In that file you can specify the libraries you need and it's going to download the dependencies for you.
For example
{
"name": "myapp",
"version": "0.0.1",
"author": "Alvise Susmel <alvise#50pixels.com>",
"dependencies": {
"jade": "*",
"express": "*",
"socket.io": "*"
}
}
and just execute
npm install
And npm will make all for you. It will create a "node_modules" where there are the dependencies.
Just create your js files in the same directory of "node_modules" and the dependencies will be all available to be included.
As you can see in the package.json file, near every dependency, there is a " * ", that means "all versions". If you want, you can set a specific version.
If you want to know more about this, that's a useful link: https://npmjs.org/doc/json.html
Related
EDIT: My problem is solved. Link for solution
First of all, hello everyone,
Although dependencies and dev dependencies are specified in the package.json file (I also downloaded the modules to the node_modules folder with the npm install command), I get the following error when I enter the npx parcel index.html command. What would be the reason?
"devDependencies": {
"#parcel/transformer-sass": "^2.6.0",
"parcel": "^2.6.0"
},
"dependencies": {
"bootstrap-icons": "^1.8.3"
}
Console output:
PS C:\Users\ubeyd\GitHub\countrypedia> npx parcel index.html
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
Error: The specified module could not be found.
\\?\C:\Users\ubeyd\GitHub\countrypedia\node_modules\#parcel\source-map\parcel_sourcemap_node\artifacts\index.win32-x64-msvc.node
at Object.Module._extensions..node (node:internal/modules/cjs/loader:1189:18)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (C:\Users\ubeyd\GitHub\countrypedia\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
at Object.<anonymous> (C:\Users\ubeyd\GitHub\countrypedia\node_modules\#parcel\source-map\parcel_sourcemap_node\index.js:15:18)
at Module._compile (C:\Users\ubeyd\GitHub\countrypedia\node_modules\v8-compile-cache\v8-compile-cache.js:192:30)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12) {
code: 'ERR_DLOPEN_FAILED'
}
I am trying to execute nodejs code to invoke AWS API using aws-api-gateway-client module. Code workes perfectly in my laptop however when deployed to TEST server which has latest nodejs and aws npm module installed.
var apigClientFactory = require('aws-api-gateway-client')
Path Npm modules are installed:
C:\Program Files\nodejs\node_modules\npm\node_modules
Output
''' internal/modules/cjs/loader.js:983
throw err;
^
Error: Cannot find module 'aws-api-gateway-client'
Require stack:
- C:\Myfolder\agent\scripts\NodeJSAWSConnector\APINetworks.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
at Function.Module._load (internal/modules/cjs/loader.js:862:27)
at Module.require (internal/modules/cjs/loader.js:1042:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (C:\ServiceNow\foggydev\agent\scripts\NodeJSAWSConnector\APINetworks.js:8:25)
at Module._compile (internal/modules/cjs/loader.js:1156:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\MyFolder\\agent\\scripts\\NodeJSAWSConnector\\APINetworks.js'
]
}
'''
Please advise on the above issue.
Update 2:
package.json file has entry
"dependencies": {
"JSONStream": "^1.3.5",
"abbrev": "~1.1.1",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
"aproba": "^2.0.0",
"archy": "~1.0.0",
"aws-api-gateway-client": "^0.3.3",
"aws-sdk": "^2.656.0",
"bin-links": "^1.1.7",
"bluebird": "^3.5.5",
"byte-size": "^5.0.1",
"cacache": "^12.0.3",
"call-limit": "^1.1.1",
"chownr": "^1.1.4",
"ci-info": "^2.0.0",
"cli-columns": "^3.1.2",
"cli-table3": "^0.5.1",
Also, aws-api-gateway-client is installed at C:\Program Files\nodejs\node_modules\npm\node_modules
Your app is in C:\ServiceNow\foggydev\agent\scripts\NodeJSAWSConnector\APINetworks.js
node_modules are in: C:\Program Files\nodejs\node_modules\npm\node_modules
Seems like You've installed aws-api-gateway-client globally (since You're saying that node_modules folder is in different place)
Steps to check and solve:
1) check package.json file if it exists in dependencies,
2) make sure in Your test server aws-api-gateway-client exists in node_modules folder,
3) do npm i --save aws-api-gateway-client to install it in node_modules folder relative to Your project, which will also add that module to dependencies in package.json
4) deploy to test server again with updated packge.json
my node app directory sits at /usr/node/express-test/app.js
I followed this thread to set up my environment so that I can have a freelancer come in and install npm packages globally on our server without having to have access to sudo.
How to npm install globally without root
I've checked my NODE_PATH... looks okay to me.
echo $NODE_PATH
/usr/node/.npm-packages/lib/node_modules
However, the error I see when I try to run my app.js appears to be that it cannot find my globally installed express module
app.js
/usr/node/express-test# node app.js
internal/modules/cjs/loader.js:983
throw err;
^
Error: Cannot find module 'express'
Require stack:
- /usr/node/express-test/app.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
at Function.Module._load (internal/modules/cjs/loader.js:862:27)
at Module.require (internal/modules/cjs/loader.js:1042:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/usr/node/express-test/app.js:2:15)
at Module._compile (internal/modules/cjs/loader.js:1156:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/usr/node/express-test/app.js' ]
}
Ideas to what the problem may be please?
My suggestions on this:
First of all, do not install express or any other packages as global put packages in the package.json and run npm install or do npm install --save express to save the packages to local node_modules and list it in package.json, track that package.json & package-lock.json in git so that it can be used in other places, this way if you shift to some new VM you don't need to install packages as global again, you can just do npm install or better npm ci and it's all work.
Secondly, if you still want to use global packages go to /usr/node/.npm-packages/lib/node_modules and see if you can find express folder there
I'm having issues deploying to Heroku. Got it running locally after i had the same error by simply rm -f node_modules and then reinstalling them with npm install. But when i deploy to heroku the error keeps occurring. Even went in with bash to perform the same steps.
I then used npm shrinkwrap and noticed aws-sdk has a dependency on lodash vs 3.5.0 <3.6.0. So i set the lodash version in my package.json accordingly.
It all still runs locally but keeps crashing on heroku.
Node v5.0.0
NPM v3.3.6
"dependencies": {
"aws-sdk": "^2.6.6",
"bluebird": "^3.4.6",
"body-parser": "^1.15.2",
"express": "^4.14.0",
"goosepage": "0.0.1",
"lodash": "^3.5.0"
}
Additional heroku log
Error: Cannot find module 'lodash/object/assign'
Function.Module._resolveFilename (module.js:337:15)
Function.Module._load (module.js:287:25)
Module.require (module.js:366:17)
require (module.js:385:17)
Object.<anonymous> (/app/node_modules/xmlbuilder/lib/index.js:5:12)
Object.<anonymous> (/app/node_modules/xmlbuilder/lib/index.js:14:4)
Module._compile (module.js:425:26)
Object.Module._extensions..js (module.js:432:10)
Module.load (module.js:356:32)
Function.Module._load (module.js:311:12)
Module.require (module.js:366:17)
require (module.js:385:17)
Object.<anonymous> (/app/node_modules/aws-sdk/lib/xml/builder.js:2:15)
Module._compile (module.js:425:26)
Object.Module._extensions..js (module.js:432:10)
Module.load (module.js:356:32)
Turns out Heroku had a Buildpack that was caching node_modules. Turning off caching didnt help so i had to use the heroku plugin to clear the cached which worked.
https://github.com/heroku/heroku-repo
heroku repo:purge_cache -a appname
The following allegedly should also work incase the above doesn't
heroku config:set NODE_MODULES_TRUE=false
So we have a web application project. Let's call it MainProject. We have other modules that we made. Let's call it ChildProject. The ChildProject's package.json has devDependcies entries.
"devDependencies": {
"some-3rd-party-module": "^1.0.0"
}
So I run npm install in MainProject. However, some-3rd-party-module doesn't get installed because when I run npm start, it shows an error. The error looks like this
module.js:340
throw err;
^
Error: Cannot find module 'some-3rd-party-module'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
What are we doing wrong?
devDependencies are the dependencies needed only while developing the module, like testing frameworks. They won't be installed when you're including the module in another project.
If your module ChildProject depends on some-3rd-party-module that should be listed under its dependencies not devDependencies.