Cannot install jasmine-core on Windows 7 / OSX - npm

I am trying to install karma-jasmine on Windows 7 / Git Bash, according to these guidelines: http://karma-runner.github.io/0.13/intro/installation.html
However, the installation fails for jasmine-core:
$ npm install karma-jasmine karma-chrome-launcher --save-dev
npm WARN install Couldn't install optional dependency: Unsupported
ngut#1.0.0 g:\SW Engineering\ngUT
├── UNMET PEER DEPENDENCY jasmine-core#*
├─┬ karma-chrome-launcher#0.2.2
│ ├─┬ fs-access#1.0.0
│ │ └── null-check#1.0.0
│ └─┬ which#1.2.0
│ └─┬ is-absolute#0.1.7
│ └── is-relative#0.1.3
└── karma-jasmine#0.3.6
npm WARN EPEERINVALID karma-jasmine#0.3.6 requires a peer of jasmine-core#* but
none was installed.
I tried the installation first with Cygwin, only to learn that npm is not supported on Cygwin, but there the failing dependency was fsevent.
The global installation of jasmine-core succeeds, but I am trying to follow this tutorial and karma start karma.conf.js fails for the same reason (missing jasmine-core) with the global installation as well.
Finally, the exact same problem appears on OSX as well.

Karma v.0.13.16 just did not support v.5.3.0 of Node. The supported Node versions were listed on Karma installation page.

Related

npm cant change Jasmine package version

if I run npm view jasmine version or npm view jasmine version -g from ~ the version returned is 3.3.1
I need the version to be 2.8.0 so i try to downgrade with npm install jasmine#2.8.0 -g but npm view jasmine version is still 3.3.1
Now if i do npm list -g i see the correct version for jasmine (2.8.0)... So where is the 3.3.1 coming from?
├─┬ jasmine#2.8.0
│ ├── exit#0.1.2
│ ├─┬ glob#7.1.3
│ │ ├── fs.realpath#1.0.0
│ │ ├─┬ inflight#1.0.6
│ │ │ ├── once#1.4.0 deduped
│ │ │ └── wrappy#1.0.2
│ │ ├── inherits#2.0.3
│ │ ├─┬ minimatch#3.0.4
│ │ │ └─┬ brace-expansion#1.1.11
│ │ │ ├── balanced-match#1.0.0
│ │ │ └── concat-map#0.0.1
│ │ ├─┬ once#1.4.0
│ │ │ └── wrappy#1.0.2 deduped
│ │ └── path-is-absolute#1.0.1
│ └── jasmine-core#2.8.0
Understanding the npm view command:
When you run either of the following npm view commands:
npm view jasmine version
or
npm view jasmine version -g
you are sending a GET request to the npm registry. More specifically you are sending a request to the following endpoint:
https://registry.npmjs.org/jasmine
You can verify this by appending the -d option to your command for additional logging information. For instance, if you run;
npm view jasmine version -d
you'll see additional information in your log which includes something like the following:
npm http request GET https://registry.npmjs.org/jasmine
Note: This line above indicates the endpoint which your view command is making the request to.
So where is the 3.3.1 coming from?
3.3.1 is the latest version of the jasmine package available in the npm registry. The result of any view command does not indicate information about packages installed on your system, instead it returns information (metadata) about packages held in the npm registry.
You'll continue to see version 3.3.1 logged to your console when running;
npm view jasmine version
(from any directory location on your system), until a newer version of jasmine is published to the npm registry.
Additional Notes:
The two npm commands that you are running, namely:
npm view jasmine version
and
npm view jasmine version -g
are effectively the same command. The view command does not provide a -g option. The -g option is simply being ignored.
The npm list command, (as you've already discovered), should be utilized for retrieving information about packages that are installed on your system. Hence that why its indicating your expected result(s).

Downgrade Parse Server

I've been trying for 2 hours straight now, to downgrade Parse Server from 3.0.0 to 2.8.4 and I fail every time!
I changed it from package.json, npm install, go to dashboard, still: server version 3.0.0!
Here are the logs of the installation:
npm install
npm WARN deprecated uws#10.148.1: stop using this version
parse-server-example#1.4.0 /root/parse-server-example
├─┬ parse-dashboard#1.2.0
│ └─┬ express#4.16.3
│ ├── array-flatten#1.1.1
│ ├── encodeurl#1.0.2
│ ├─┬ finalhandler#1.1.1
│ │ └── encodeurl#1.0.2
│ ├─┬ send#0.16.2
│ │ └── encodeurl#1.0.2
│ └─┬ serve-static#1.13.2
│ └── encodeurl#1.0.2
└─┬ parse-server#2.8.4
├─┬ #parse/push-adapter#3.0.0-alpha2
│ └─┬ parse#1.11.1
│ └─┬ ws#3.3.3
│ └── ultron#1.1.1
├── #parse/simple-mailgun-adapter#1.0.2
├── commander#2.16.0
├─┬ express#4.16.2
│ ├── array-flatten#1.1.1
│ └── encodeurl#1.0.2
├── lru-cache#4.1.2
├─┬ mongodb#3.1.1
│ └─┬ mongodb-core#3.1.0
│ └── bson#1.0.9
├─┬ parse#1.11.1
│ └─┬ ws#3.3.3
│ └── ultron#1.1.1
└── request#2.85.0
npm ERR! Linux 4.15.0-34-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! path /root/parse-server-example/node_modules/.staging/node-pre-gyp-49f396d5
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/root/parse-server-example/node_modules/.staging/node-pre-gyp-49f396d5' -> '/root/parse-server-example/node_modules/bcrypt/node_modules/node-pre-gyp'
npm ERR! enoent ENOENT: no such file or directory, rename '/root/parse-server-example/node_modules/.staging/node-pre-gyp-49f396d5' -> '/root/parse-server-example/node_modules/bcrypt/node_modules/node-pre-gyp'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR! /root/parse-server-example/npm-debug.log
What can I do?
Absolutely never run this command without looking at what's going to be deleting and understanding whether or not it's OK, but try doing rm -rf <path>/node_modules/*. Maybe wait for a comment or two confirming. Seriously don't just randomly do an rm -rf command because someone on the internet told you to.
But in this case, you should be fine deleting node_modules, and a package-lock.json if it exists, and running npm install to do a bit of a fresh install of what's in your package.json.
Seriously, absolutely don't do this until you look up what it is you're doing and verify it'd be OK.
package-lock.json tracks the changes in the versions of modules you use. node_modules is where npm install installs all the modules to. When you run the command, it checks your node_modules vs your package.json to see if there are any more recent versions that match your criteria. Idk why it's not downgrading, but if your package.json is set up right, this should give it a fresh install and should work.
Do at your own risk, though.

npm installs dependencies on a different depth level

I have a "eslint-config" module published as a github repo. It has such dependencies:
"dependencies": {
"babel-eslint": "7.2.3",
"babel-runtime": "^6.0.0",
"eslint": "3.19.0",
"eslint-config-airbnb": "15.0.1",
"eslint-plugin-import": "2.3.0",
"eslint-plugin-jsx-a11y": "5.0.3",
"eslint-plugin-react": "7.0.1"
},
In another empty project "estest" I installed this module as a single dev dependency:
npm i -D github:MyTeam/eslint-config
The command produced the output:
npm WARN eslint-config-airbnb#15.0.1 requires a peer of eslint#^3.19.0 but none was installed.
npm WARN eslint-plugin-import#2.3.0 requires a peer of eslint#2.x - 3.x but none was installed.
npm WARN eslint-plugin-jsx-a11y#5.0.3 requires a peer of eslint#^2.10.2 || 3.x but none was installed.
npm WARN eslint-plugin-react#7.0.1 requires a peer of eslint#^3.0.0 but none was installed.
npm WARN eslint-config-airbnb-base#11.2.0 requires a peer of eslint#^3.19.0 but none was installed.
+ eslint-config#1.0.0
added 203 packages in 13.898s
It acts like eslint module was not installed.
If I look inside estest/node_modules I see that structure:
node_modules
eslint-config // <-- this is my module
node_modules
eslint // <-- it has only one dep installed inside
// all other `eslint-config` deps are flat-installed into root:
babel-eslint
eslint-config-airbnb
eslint-plugin-import
eslint-plugin-jsx-a11y
eslint-plugin-react
...
So all eslint-config dependencies were flat-installed into root node_modules except eslint. And because of this some of them complains that peer dependency is missing.
And npm ls command shows eslint as unmet peer dep:
└─┬ eslint-config#1.0.0
├─┬ babel-eslint#7.2.3
├─┬ UNMET PEER DEPENDENCY eslint#3.19.0
├─┬ eslint-config-airbnb#15.0.1
│ ├── UNMET PEER DEPENDENCY eslint#^3.19.0
│ └── eslint-config-airbnb-base#11.2.0
├─┬ eslint-plugin-import#2.3.0
│ ├─┬ eslint-import-resolver-node#0.2.3
│ ├─┬ eslint-module-utils#2.1.1
├─┬ eslint-plugin-jsx-a11y#5.0.3
└─┬ eslint-plugin-react#7.0.1
I want to be able to just install eslint-config dependency and do not install eslint separately. How to do it?

├── UNMET PEER DEPENDENCY generator-karma#>=0.9.0

So basically I want to understand why when I run npm install sass-loader node-sass --save-dev I get this error
├── UNMET PEER DEPENDENCY generator-karma#>=0.9.0
However it's clear that Karma is installed since when I run npm install generator-karma I see that :
└─┬ generator-karma#2.0.0 <--- Which mean karma is there...
└─┬ yeoman-generator#0.22.6
├── async#1.5.2
...
I've read answer explaining I should use npm install -g grunt-cli bower yo generator-karma generator-angular but this is not helping much.
Should I uninstall and reinstall a clean node_modules ?
npm no longer installs module dependencies automatically. That means you have to install the dependencies modules yourself. Basically if you run npm install generator-karma#>=0.9.0 and then run the your previous npm install command you should be good to go.

npm ERR! invalid: ionic-app-lib#0.5.1-beta.0

$ ionic info
Your system information:
Cordova CLI: 5.3.3
Ionic CLI Version: 1.7.0
Ionic App Lib Version: 0.5.1-beta.0
ios-deploy version: 1.8.2
ios-sim version: 5.0.2
OS: Mac OS X El Capitan
Node Version: v4.1.2
Xcode version: Xcode 7.0.1 Build version 7A1001
There is an error:
$ npm list -g
/Users/horace/.nvm/versions/node/v4.1.2/lib
├─┬ cordova#5.3.3
│ ├─┬ cordova-lib#5.3.3
.
.
.
├─┬ which#1.1.2
│ └─┬ is-absolute#0.1.7
│ └── is-relative#0.1.3
├── wrappy#1.0.1
└── write-file-atomic#1.1.3
npm ERR! invalid: ionic-app-lib#0.5.1-beta.0 /Users/horace/.nvm/versions/node/v4.1.2/lib/node_modules/ionic/node_modules/ionic-app-lib
How can I fix it?