Estou entrando em uma base de código Node.js., que requer o download de algumas dependências via NPM, a saber, jQuery.
Ao tentar executar npm install jquery
, continuo recebendo este erro:
Your environment has been set up for using Node.js 0.8.21 (x64) and NPM
C:\Users\Matt Cashatt>npm install jquery
npm http GET https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/htmlparser/1.7.6
npm http GET https://registry.npmjs.org/location/0.0.1
npm http GET https://registry.npmjs.org/navigator
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/htmlparser/1.7.6
npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/location/0.0.1
npm http 304 https://registry.npmjs.org/navigator
npm http 304 https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/bindings
> contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module
s\contextify
> node-gyp rebuild
C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr
am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b
in\node-gyp.js" rebuild
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/request
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:82:11
gyp ERR! stack at Object.oncomplete (fs.js:297:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify
gyp ERR! node -v v0.8.21
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_
modules\jquery\node_modules\jsdom\node_modules\request\tests'
npm ERR! error rolling back [email protected] { [Error: ENOTEMPTY, rmdir 'C:\Users\M
att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque
ry\\node_modules\\jsdom\\node_modules\\request\\tests' }
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls contextify
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! code ELIFECYCLE
npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo
dules\jsdom\node_modules\request\tests\test-pipes.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_
modules\request\tests\test-pipes.js
npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd
om\node_modules\request\tests\test-pipes.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Users\Matt Cashatt\npm-debug.log
npm ERR! not ok code 0
C:\Users\Matt Cashatt>
Parece que a falha ocorreu devido à falta de uma instalação do Python. Bem, eu instalei o Python, configurei a variável e reiniciei e ainda assim o erro.
Alguma pista do que estou perdendo?
PYTHON=C:\Python27\Python.exe
na janela do cmd e reiniciou, a configuração foi perdida.cmd.exe
janela, antes de tentar onpm
comando, um dos intérpretes Python é iniciadopython
ou%PYTHON%
iniciado? Caso contrário, você não configurou corretamente.Respostas:
Seu problema é que você não definiu a variável de ambiente.
O erro diz claramente isso:
E no seu comentário, você diz que fez o seguinte:
Isso é legal, mas isso não define a
PYTHON
variável, define aPYTHONPATH
variável.Enquanto isso, apenas o uso do
set
comando afeta apenas acmd
sessão atual . Se você reiniciar depois disso, como disse, acaba com umacmd
sessão totalmente nova que não possui essa variável definida.Existem algumas maneiras de definir variáveis de ambiente permanentemente - a mais fácil é no Painel de controle do sistema no XP, que é obviamente diferente no Vista, diferente novamente no 7 e diferente no 8, mas você pode pesquisar no Google.
Como alternativa, basta fazer o
set
direito antes donpm
comando, sem reiniciar no meio.Você pode testar se fez as coisas corretamente, fazendo exatamente a mesma coisa que o script de configuração está tentando fazer: Antes de executar
npm
, tente executar%PYTHON%
. Se você fez isso corretamente, receberá um intérprete Python (do qual você pode sair imediatamente). Se você receber um erro, não o fez corretamente.Existem dois problemas com isso:
Primeiro, você está definindo
PYTHON
a;D:\Python
. Esse ponto e vírgula extra é bom para uma lista de caminhos separados por ponto e vírgula, comoPATH
ouPYTHONPATH
, mas não para um único valor comoPYTHON
. Da mesma forma, adicionar um novo valor ao valor existente é o que você deseja quando deseja adicionar outro caminho a uma lista de caminhos, mas não para um único valor. Então, você só querset PYTHON=D:\Python
.Segundo,
D:\Python
não é o caminho para o seu intérprete Python. É algo comoD:\Python\Python.exe
, ouD:\Python\bin\Python.exe
. Encontre o caminho certo, verifique se ele funciona sozinho (por exemplo, digiteD:\Python\bin\Python.exe
e certifique-se de obter um intérprete Python), depois defina a variável e use-a.Assim:
Ou, se você quiser torná-lo permanente, faça o equivalente no Painel de Controle.
fonte
D
unidade é onde eu tenho o Python, caso você esteja se perguntando. Obrigado novamente por sua ajuda.set
comando na janela de comando do NPM por algum motivo e, em seguida, execute ompm install jquery
comando logo depois. Se eu os fiz separadamente, não funcionou por algum motivo.set
comando afeta apenas acmd
janela atual , então você deve fazê-lo antes de executarnpm
na mesma janela. Se você deseja definir variáveis de ambiente de forma mais permanente, isso está no Painel de Controle do Sistema ou equivalente à sua versão do Windows.Se você não possui o python instalado junto com todas as dependências do node-gyp, basta abrir o Powershell ou o Git Bash com privilégios de administrador e execute:
e depois instalar o pacote:
uma vez instalado, você terá todas as dependências do node-gyp baixadas, mas ainda precisará da variável de ambiente. Validar Python é realmente encontrado na pasta correta:
Nota - ele usa python 2.7 e não 3.x, pois não é suportado
Se não se lamentar, vá em frente e crie sua variável de ambiente (usuário):
reinicie o cmd e verifique se a variável existe através da
set PYTHON
qual deve retornar a variávelPor fim, aplique novamente
npm install <module>
fonte
setx PYTHON $env:USERPROFILE\.windows-build-tools\python27\python.exe
Para mim depois de instalar o windows-build-tools com o comentário abaixo
executando o código abaixo
trabalhou.
fonte
Aqui está um guia que resolveu muitos desses problemas para mim.
http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/
Lembro-me em particular da versão python como importante. Certifique-se de instalar o 2.7.3 em vez dos 3.
fonte
Um e / ou vários desses devem ajudar:
Adicione
C:\Python27\
à suaPATH
variável (considerando que você tem o Python instalado neste diretório)Como definir a
PATH
variável env: http://www.computerhope.com/issues/ch000549.htmReinicie seu console e / ou Windows após definir a variável.
Na mesma seção acima ("Variáveis de ambiente"), adicione nova variável com nome
PYTHON
e valorC:\Python27\python.exe
Reinicie seu console e / ou Windows após definir a variável.
Abra a linha de comando do Windows (
cmd
) no modo Admin .Altere o diretório para o caminho da instalação do Python:
cd C:\Python27
faça o link simbólico necessário para algumas instalações:
mklink python2.7.exe python.exe
Observe que você deve ter o Python 2.x, NÃO 3.x , para executar
node-gyp
instalações baseadas!O texto abaixo diz sobre o Unix, mas a versão do Windows também requer o Python 2.x:
Este artigo também pode ajudar: https://github.com/nodejs/node-gyp#installation
fonte
Eu tive o mesmo problema e nenhuma dessas respostas ajudou. No meu caso, a variável PYTHON foi definida corretamente. No entanto, o python foi instalado muito profundo, ou seja, possui um caminho muito longo. Então, eu fiz o seguinte:
E é isso!
fonte
Isso ajudou: https://www.npmjs.com/package/node-gyp
Eu segui estes passos:
então:
fonte
Existem algumas soluções para resolver esse problema: 1) execute o prompt de comando como "administrador".
Se a primeira solução não resolver o seu problema, tente esta:
2) abra um prompt de comando como administrador, cole a seguinte linha de código e pressione enter:
fonte
TL; DR Faça uma cópia ou alias do seu python.exe com o nome python2.7.exe
Meu python 2.7 foi instalado como
Sempre recebi esse erro, independentemente de como eu defini (e verifiquei) a variável env PYTHON env:
A razão para isso foi que, no configure.js do node-gyp, o executável python foi resolvido da seguinte forma:
var python = gyp.opts.python || process.env.PYTHON || 'python'
E acabou que o gyp.opts.python tinha o valor 'python2.7', substituindo assim process.env.PYTHON.
Eu resolvi isso criando um alias para python.exe executável com o nome node-gyp que estava procurando:
D:\app\Python27>mklink python2.7.exe python.exe
Você precisa de direitos de administrador para esta operação.
fonte
O seguinte funcionou para mim na linha de comando como administrador:
Instalando o windows-build-tools (isso pode levar de 15 a 20 minutos):
Adicionando / atualizando a variável de ambiente:
Instalando o node-gyp:
Alterando o nome do arquivo exe de Python para Python2.7.
npm install module_name --save
fonte
não posso deixar de mencionar isso. Se você estiver usando Python3 e falhando com o node-gyp, lamento dizer que o node-gyp atualmente não suporta python3.
Aqui está um link para você: https://github.com/nodejs/node-gyp/issues/1268 https://github.com/nodejs/node-gyp/issues/193
fonte
Essa é a maneira mais fácil de permitir que o NPM faça tudo por você
fonte
O caminho certo é 1) Baixe e instale o python 2.7.14 a partir daqui . 2) Defina a variável de ambiente para python a partir daqui .
feito!
Nota: Defina a variável de ambiente de acordo. Eu respondi aqui pelas janelas.
fonte
Eu enfrentei o mesmo desafio ao tentar instalar o [email protected] .
E depois de examinar a documentação oficial atual e de ter lido as respostas acima, notei que talvez você não precise necessariamente instalar o node-gyp nem instalar as ferramentas de construção do Windows. É o que diz aqui sobre a instalação do node-gyp no Windows . Lembre-se de que o node-gyp está envolvido no processo de instalação do node-sass. E você realmente não precisa reinstalar outra versão do python.
Este é o salvador, configure o caminho python que o "npm" deve procurar ao instalar quaisquer pacotes que exijam ferramentas de construção.
Eu tinha instalado o python3.6.3, no Windows-7, lá.
fonte
[email protected]
, quando eu mudei parawindows-10
, usando[email protected]
e[email protected]
Python36/python
deve ser o caminho para o arquivo executável python.exe
hold Shift, and Right-Click
e digite:npm config set python
Por que não baixar o instalador python aqui ? Faz o trabalho para você quando você verifica a instalação do caminho
fonte
Para mim, essas etapas corrigiram o problema:
1- Executando este cmd como administrador:
npm install --global --production windows-build-tools
2- Em seguida, execute a
npm rebuild
conclusão da 1ª etapa (principalmente a instalação da python 2.7, que foi a principal causa do problema)fonte
Aqui está o comando correto: set path =% path%; C: \ Python34 [Substitua pelo caminho correto da sua instalação do python]
Eu tive o mesmo problema e resolvi isso assim.
Como algumas pessoas apontaram, essa é uma configuração volátil, funciona apenas para a sessão atual do cmd e (obviamente) você precisa definir seu caminho antes de executar o npm install.
Eu espero que isso ajude.
fonte
Não é necessário reinstalar, jogue essa exceção pelo script node-gyp e tente reconstruir. É suficiente variável de ambiente de instalação como no meu caso:
fonte
Se você estiver tentando usar isso no Cygwin, precisará seguir as instruções nesta resposta. (É um problema como o Cygwin trata os links simbólicos do Windows.)
fonte
Exemplo: pg_config não executável / erro node-gyp
Solução: No Windows, apenas tente adicionar PATH Env -> C: \ Arquivos de Programas \ PostgreSQL \ 12 \ bin
Trabalhe para mim, agora eu posso usar o npm i pg-promessa por exemplo ou outras dependências.
fonte
pg-promise
você não precisa disso. Você provavelmente foi pego por isso . Basta usar a versão mais recente, e você vai ficar bem, não há necessidade de qualquer dessas coisas extra;)Para mim, o problema era que eu estava usando a versão mais recente do nó e não a
LTS
versão que é a versão estável e recomendada para a maioria dos usuários.O uso da
LTS
versão resolveu o problema.Você pode fazer o download aqui:
Versão LTS
Versão Atual Atual
fonte