Reputation: 3263
I am learning nodejs at the moment on Windows. Several modules are installed globally with npm.cmd, and nodejs failed to find the installed modules. Take jade for example,
npm install jade -g
Jade is installed in directory "C:\Program Files (x86)\nodejs\node_modules"
, but the following code will fail with a "Cannot find module 'jade'"
error,
var jade = require('jade');
However, the code will run successfully when jade is locally installed (without -g option in npm). I don't want to use locally-installed modules, it's a waste of disk space for me. How can I make the globally-installed modules work on Windows?
Upvotes: 268
Views: 375085
Reputation: 81
I was trying pnpm prisma generate
and npm prisma generate
and none of them worked. But then I tried with the npx command, like below.
npx prisma generate
And this line of code saves me, it sounds a little bit weird but it does working atleast on my project.
Upvotes: 0
Reputation: 3819
I had to add following to Path
variable under System variables
. Setting variable under User variable
did not work for me. I am using windows 11.
%USERPROFILE%\AppData\Roaming\npm
Upvotes: 1
Reputation: 482
For me worked on Windows 10 npm config set prefix %AppData%\npm\node_modules
Upvotes: 4
Reputation: 13997
All of the above answers did not work for me. The only thing that worked eventually was to add the %AppData%\npm to the environment Path variable, AND to delete the two ng files in C:\Program Files\nodejs.
The ng packages were not installed in C:\Program Files\nodejs\node_modules, so it was apparent that using the ng binary from the nodejs directory would not work.
I am not sure why it searched in this directory, because I already configured - PATH environment variable - .npmrc in the C:\Users\MyUser - Tried to add system variables and/or NODE_PATH
Upvotes: 0
Reputation: 8236
Add an environment variable called NODE_PATH
and set it to %USERPROFILE%\Application Data\npm\node_modules
(Windows XP), %AppData%\npm\node_modules
(Windows 7/8/10), or wherever npm ends up installing the modules on your Windows flavor. To be done with it once and for all, add this as a System variable in the Advanced tab of the System Properties dialog (run control.exe sysdm.cpl,System,3
).
Quick solution in Windows 7+ is to just run:
rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules
It's worth to mention that NODE_PATH
is only used when importing modules in Node apps. When you want to use globally installed modules' binaries in your CLI you need to add it also to your PATH
, but without node_modules
part (for example %AppData%\npm
in Windows 7/8/10).
Old story
I'm pretty much new to node.js myself so I can be not entirely right but from my experience it's works this way:
See similar question for more details: How do I install a module globally using npm?
Upvotes: 379
Reputation: 457
Just download and re-install the node from this and this will fix all the path issues.
Don't forget to restart your command prompt or terminal.
Upvotes: 0
Reputation: 2094
I'll just quote from this node's blog post...
In general, the rule of thumb is:
- If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project.
- If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.
...
Of course, there are some cases where you want to do both. Coffee-script and Express both are good examples of apps that have a command line interface, as well as a library. In those cases, you can do one of the following:
- Install it in both places. Seriously, are you that short on disk space? It’s fine, really. They’re tiny JavaScript programs.
- Install it globally, and then npm link coffee-script or npm link express (if you’re on a platform that supports symbolic links.) Then you only need to update the global copy to update all the symlinks as well.
Upvotes: 14
Reputation: 428
I had the same issue, trying to install bower with npm install -g bower
I think this was because node was installed by another user, not me.
I uninstalled node, and then I reinstalled it. During installation, I saw this text for the option Add to PATH > npm modules:
Message in node installation
After node installation, I executed npm install -g bower
again. And now bower works.
Sure is not necessary reinstall node with own user, like me. Solution must be via NODE_PATH or PATH variables, as other users have explained.
This is only to remark that this problem occurs only if node has been installed by another user (or if during installation the option Add to PATH > npm modules has not been marked).
Upvotes: 3
Reputation: 1900
I had a terrible time getting global modules to work. Eventually, I explicitly added C:\Users\yourusername\AppData\Roaming\npm
to the PATH variable under System Variables. I also needed to have this variable come before the nodejs path variable in the list.
I am running Windows 10.
Upvotes: 13
Reputation: 9
For Windows 10, I had to locally install gulp in the folder:
C:\Users\myaccount\AppData\Roaming\npm\node_modules
npm install gulp
This fixed my issue of "gulp is not recognized"
Upvotes: 0
Reputation: 6701
I know i can awake a zombie but i think this is still a problem, if you need global access to node modules on Windows 7 you need to add this to your global variable path:
C:\Users\{USER}\AppData\Roaming\npm
Important: only this without the node_modules
part, took me half hour to see this.
Upvotes: 42
Reputation: 2312
For making it work on windows 10 I solved it by adding the folder %USERPROFILE%\AppData\Roaming\npm
to my PATH. Having \node_modules
appended like this: %USERPROFILE%\AppData\Roaming\npm\node_modules\
did not work for me.
Upvotes: 28
Reputation: 204
For windows, everybody said you should set environment variables for nodejs and npm modules, but do you know why? For some modules, they have command line tool, after installed the module, there'are [module].cmd file in C:\Program Files\nodejs, and it's used for launch in window command. So if you don't add the path containing the cmd file to environment variables %PATH% , you won't launch them successfully through command window.
Upvotes: 4
Reputation: 133
I stumbled on this question because I want to use node.js with visual studio 2015 on my new computer with windows 10. I used node.js on windows 7 and 8 and 8.1 Never a problem node.js finding a module. I use a legacy node.js 0.10.39 because I have to use this version because of the serial and RFXCOM module.
The answer for windows 10 is to set the NODE_PATH in the enviroment variables with C:\Users\User\node_modules.
Upvotes: 1
Reputation: 193
Tried to add/edit environment variables and come to conclude that:
User variables
(of the upper box) instead of System variables
(of the lower part); otherwise you have to "run as administrator" to get it work.;%AppData%\npm
to Path
in order to use it as a command line tool (if supported, like jshint
and grunt-cli
).NODE_PATH
and set it %AppData%\npm\node_modules
in order to require('<pkg_name>')
in scripts without install it in the project directory. (But npm link
is suggested for this requirement if you're working on OS with mklink
such as Vista and newer.)Test environment:
Upvotes: 12
Reputation: 357
if you are in the windows7 platform maybe you should change the NODE_PATH like this:
%AppData%\npm\node_modules
Upvotes: 34
Reputation: 1653
I ran into this issue on Windows 7, running
npm install -g gulp
as administrator while being logged on as a normal user.
Solution: When executing the same installation as normal user (not "run as admin" for cmd) all was fine. I guess it is related to the default install and search path.
Upvotes: 6
Reputation: 2006
From my expierience with win8.1 npm installs modules on
C:\Users\[UserName]\AppData\Roaming\npm\node_modules
but dumply searches them on
C:\Users\[UserName]\node_modules
.
One simple solution reference module in application by full path:
var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
Upvotes: 4
Reputation: 3532
Alternatively you could add to ~/.npmrc
right prefix. I've got C:\Program Files\nodejs
for 64 Win7.
Upvotes: 1
Reputation: 2101
if you are using windows , it takes some steps , 1) create a file called package.json
{
"name": "hello"
, "version": "0.0.1"
, "dependencies": {
"express": "*"
}
}
where hello is the name of the package and * means the latest version of your dependency
2) code to you project directory and run the following command
npm install
It installs the dependencies
Upvotes: -4
Reputation: 2228
To make it short, use npm link jade
in your app directory.
Upvotes: 12