npm install jsdom error on windows?

2019-02-06 13:03发布

问题:

I have installed nodejs on my windows pc. And it was working fine. But when I tried to install jsdom using "npm install jsdom" I was prompoted by this error.

node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild info it worked if it ends with ok
ERR! Error: Python does not seem to be installed
at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:78:14) at Object.oncomplete (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:66:11) ERR! not ok
npm WARN optional dependency failed, continuing contextify@0.1.2
jsdom@0.2.13 ./node_modules/jsdom
+-- cssom@0.2.3 +-- htmlparser@1.7.5

Can anyone help me regarding this problem?

回答1:

I had the same issue on Windows 7 (x64 Ultimate), after hours of search and trials, here is how I resolved it. Please follow the steps in the same exact order:

  1. Install Visual Studio 2010/2012 C++ (Express or higher)
  2. Install Windows SDK 7.1
  3. Install "Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1"
  4. Install GTK (C:\GTK)
  5. Install Python (C:\Python27)
  6. Install node.js (x86)
  7. Add [node.js] to path (C:\Program Files (x86)\nodejs\;)
  8. Add [python] to path (C:\Python27\;)
  9. Add [GTK] to path (C:\GTK\bin;)
  10. Add [WindowsSDKDir] System Variable pointing to "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin"
  11. Run "Windows SDK 7.1 Command Prompt" as Administrator
  12. Set environment to x86 using "setenv /x86"
  13. Change directory to "C:\Program Files (x86)\nodejs\"
  14. Run "npm install -g npm"
  15. Run "npm update -g npm"
  16. Run "npm install -g node-gyp"
  17. Run "node-gyp configure build"
  18. Run "npm install jsdom"
  19. Run "npm install ajax"
  20. Run "npm install http-server"
  21. Run "npm install jquery"
  22. Run "npm install xmlhttprequest"
  23. Run "npm update"

I hope this helps.



回答2:

There is a nice guide to getting JSDom working on Windows here: http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/



回答3:

jsdom has a dependency on contextify, which only recently supports windows. You'll need python and a C++ compiler to install it.

You may also need to do the following

npm install -g node-gyp
node-gyp configure


回答4:

For windows 8 64-bit, installing zmq and protobuf, the following worked for me:

First, Install Visual Studio 2012

Then, on the command prompt (in your project directory):

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
npm install jsdom


回答5:

jsdom uses contextify for running JavaScript on the DOM. And contextify requires native C++ compiler. According to the official readme, on Windows platform, one has to install:

  1. A recent copy of the x86 version of Node.js for Windows, not the x64 version. (should be okay by default)
  2. A copy of Visual C++ 2010 Express. (or any newer version)
  3. A copy of Python 2.7, installed in the default location of C:\Python27.


回答6:

If you have python installed already, you would need to add the python install directory to the PATH environment variable.

Assuming that python.exe is in the C:\Python32\ directory, on the DOS prompt you need to type:

set PATH=%PATH%;C:\Python32\;

and then:

node-gyp configure

should work fine without that error.



回答7:

After almost a half year of solving this issue, reading all forums related to this, I finally found the solution.

What I did was simple in my case because I don't use many apps on this computer.

My Windows 8.1 had many programs installed which confused the NodeJS probably (Frameworks, VS addons, etc.).

So I simply did this:

  • Removed all programs from MS, that I installed once.
  • Uninstalled Nodejs
  • For sure I cleaned the registry with CCleaner
  • Removed Python, Node-gyp and other apps related to Node.js

Then I reinstalled Node.js with optimism for JSdom which installed correctly, but crashed while running my project. So I searched for the new error which - again - has a simple solution. I had to install an older version of JSdom.

npm install jsdom@4.2.0

Finally, everything works. Hope that helps anyone with this issue.