Estou sendo mais cauteloso do que o habitual, porque fiquei confuso com o comportamento do npm
passado.
Estou em um Mac e instalei o node.js completamente brew install node
.
Agora que eu quero executar jslint.js
na linha de comando como o comando jslint
, acho que a maneira canônica de fazer isso é sudo npm install -g jslint
executada com êxito com esta saída:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Subseqüentemente
$ jslint ply.js
zsh: command not found: jslint
devido a /usr/local/share/npm/bin
não estar no meu $PATH
.
1) Por que brew
não instalou o npm
bin
caminho global para o caminho? Talvez tenha acontecido, mas algo zsh
está estragando tudo. Onde eu posso encontrar isso?
2) Devo fazer isso? (Anexe :/usr/local/share/npm/bin
ao exportado $PATH
na parte inferior do meu ~/.zshrc
)
Parece que este não é o caminho certo para fazê-lo, porque se eu instalar algo mais tarde (usando o Homebrew ou algo assim), precisarei anexá-lo ao meu script de inicialização zsh para definir o caminho. Eu acho que, neste caso específico, é apenas uma questão de npm install -g
não criar os links simbólicos corretos em um local "adequado" (como /usr/local/bin
talvez).
Acho que o que farei é criar manualmente links simbólicos /usr/local/bin
para todos os programas com problemas e deve ser bom o suficiente para meus propósitos.
EDIT : Estou atualizando isso em 2019, porque essa pergunta antiga é popular, mas agora desatualizada em termos de fluxo de trabalho pessoal e também em termos de como melhor proceder para instalar o nó e gerenciar suas várias dependências.
Meu fluxo de trabalho pessoal agora é usar o instalador obtido no nodejs.org para instalar o nó nos sistemas. Na verdade, confio nisso mais do que o próprio pacote homebrew, porque ele sabe como gerenciar os arquivos. Se você deseja alterar o nó do sistema de 8.10 para 10.15, seja no Mac ou no Windows, basta baixar o instalador do nodejs.org para 10.15 para o seu sistema operacional. Tentar atualizar o nó instalado via homebrew sempre provou ser uma abordagem mais difícil na minha experiência.
Além disso, a principal coisa a destacar é que o uso do sudo, como mostrado no meu exemplo de instalação do jslint do npm, é altamente desencorajado; Estou bastante certo de que os pacotes homebrew nunca devem ser instalados ou interagidos com o superusuário. Não deve ser necessário e levará a dores de cabeça com permissão de arquivo!
Além disso, eu recomendo o ESLint sobre o jslint e não o utilizo há anos.
Respostas:
Estendendo seu
PATH
com:Não é uma péssima ideia. Dito isto, você não deveria ter que fazer isso.
Rode isto:
O padrão no OS X é
/usr/local
, o que significa que o npm fará o link simbólico dos binários/usr/local/bin
, que já devem estar no seuPATH
(especialmente se você estiver usando o Homebrew).Assim:
npm config set prefix /usr/local
se é outra coisa, esudo
com npm! De acordo com os documentos do jslint , você deve conseguirnpm install
.Se você instalou o npm como sudo (
sudo brew install
), tente reinstalá-lo com o ol 'simplesbrew install
. O Homebrew deve ajudar a mantê-losudo
livre.fonte
npm
se recusa a instalarjslint
globalmente, no entanto.npm install -g jslint
falha.Error: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
quiser que algum script escreva links nele sem a necessidade desudo
? Que tal seguir isso para configurar nom / node~/.local
ou algo assim?root
no meu~/
diretório (porsudo rm -r
ontmp/
e a.npm/
) e, posteriormente,npm install -g jslint
trabalhei lindamente. É interessante que o próprio npm seja um programa de nó e seja um pouco de uma prova de conceito da linha de comando JS para mim, que estou começando a apreciar agora que entendo um pouco melhor.chown
-ing/usr/local
e tudo mais são práticas padrão no OS X. Consulte a página de solução de problemas no wiki do Homebrew.chown
ing/usr/local
já ocorreu na minha máquina, caso contrário,npm
et al correr semsudo
não seria capaz de depositar links em/usr/local/bin/
etc.Passou um tempo nessa questão, e a opção PATH não estava ajudando. Meu problema foi o bug Homebrew / node / npm encontrado aqui - https://github.com/npm/npm/issues/3794
Se você já instalou o nó usando o Homebrew, tente **** Observe nos comentários que isso pode não ser seguro. Funcionou para mim, mas poderia ter consequências não intencionais. Parece também que a versão mais recente do Homebrew instala corretamente o npm. Então, provavelmente eu iria tentar
brew update
,brew doctor
,brew upgrade node
etc antes de tentar ****:Ou, se você deseja instalar o nó com o Homebrew e executar o npm, use:
fonte
Eu uso o brew e o prefixo já estava definido para:
Eu notei que as pastas bin e lib eram de propriedade do root, o que impedia a instalação não-sudo usual, então, eu as detive novamente ao usuário
Acabei de adicionar o caminho para o meu .bash_profile, localizado em / Users / [user]
fonte
O brew não deve exigir que você use o sudo mesmo quando estiver executando o npm com -g. Isso pode realmente criar mais problemas no caminho.
Normalmente, o brew ou port permitem que você atualize seu caminho para que não arrisque atrapalhar o seu .zshrc, .bashrc, .cshrc ou qualquer outro tipo de shell que você usa.
fonte
sudo
. Eu estava usando o sudo onnpm
(porque algo que li me disse para). Estou curioso sobre onde procurar como o caminho está definido. Na verdade, parece que ozsh
instalador é executado algo que acaba por codificar o caminho (no momento da instalação dozsh
) para o.zshrc
qual eu não estou gostando muitonpm
deve ser instalada em/usr/local
. O/usr
espaço para nome do caminho é reservado para os pacotes oficiais da sua distribuição./usr/local/bin
no seu $ PATH ou não, é um problema do zsh.Consegui corrigir o erro Vue Cli no command, fazendo o seguinte:
sudo nano ~/.bash_profile
para editar seu perfil do bash.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
evue --version
etc.Fiz isso depois de instalar o Vue Cli mais recente em https://cli.vuejs.org/
Geralmente uso fios, mas instalei isso globalmente com o npm
npm install -g @vue/cli
. Você também pode usar fios se quiseryarn global add @vue/cli
Nota: pode ser necessário desinstalá-lo primeiro globalmente, se você já o tiver instalado:
npm uninstall -g vue-cli
Espero que isto ajude!
fonte
Qualquer um que tenha o mesmo problema está relacionado a um conflito entre fermentação e npm. Verifique esta solução https://gist.github.com/DanHerbert/9520689
fonte
Tente executar:
e faça um teste executando
express
na linha de comando. Isso funcionou para mim.fonte
~/.npm/bin
ou algo assim. não deve haver umnpm
diretório adicionado ao seu diretório doméstico.Se você vinculou os pacotes de nós usando o comando sudo
Em seguida, vá para a pasta em que node_modules está instalado globalmente.
Nos sistemas Unix, eles são normalmente colocados em / usr / local / lib / node ou / usr / local / lib / node_modules quando instalados globalmente. Se você definir a variável de ambiente NODE_PATH para esse caminho, os módulos poderão ser encontrados por nó.
Windows XP -% USERPROFILE% \ Dados do Aplicativo \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules
e depois execute o comando
Isso fornecerá a lista de todos os node_modules globais e você poderá ver facilmente os módulos de nós vinculados.
fonte
O sudo brew não é mais uma opção, portanto, se você instalar o brew nesse momento, obterá duas coisas realmente desagradáveis: R: ele gosta de instalar
/usr/local/opts
ou de acordo com isso, / usr / local / shared. Isso não é grande coisa no começo, mas tive problemas com o nó PATH, especialmente quando instalei o lint. B: você está meio que preso aos comandos sudo até desinstalá-lo e instalá-lo dessa maneira ou obter a pilha do BitnamiEu recomendo esse método sobre a opção de pilha porque está pronto para ser usado se você tiver vários projetos. Se você usar a pilha MEAN pré-fabricada, terá que configurar hosts virtuais no httpd.conf (mais do que o XAMPP é uma chatice nessa pilha), atualize normalmente os seus extras / vhosts.conf e / etc / hosts para cada atualização adicional. projeto, a menos que você queira nomear e reiniciar seu servidor quando terminar de atualizar as coisas.
fonte
Solução simples é ...
Basta colocar o comando abaixo:
sudo npm config get prefix
se não for algo assim
/usr/local
, você precisará corrigi-lo usando o comando abaixo.sudo npm config set prefix /usr/local
...Agora está 100% funcionando bem
fonte