Estou recebendo o erro abaixo:
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
Aqui estão os detalhes da minha versão:
SO: Windows 7
MongoDB: 2.6.5
Nó: 0.12.0
Eu tentei essas coisas antes de publicar o problema aqui.
Eu fui para a
\node-modules\mongoose\node-modules\mongodb\node-modules\bson
pasta e fiz a alteração abaixo no arquivo binding-gyp de'include_dirs': [ '<!(node -e "require(\'nan\')")' ]
para'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]
Executou este comando
npm install -g node-gyp
Atualizei a versão do mangusto para 3.8.21 dentro
package.json
Nada funciona. Por favor sugira
Respostas:
Encontre no módulo npm mongodb:
Mude o caminho para a versão js no bloco catch:
Para:
Ou copie o arquivo em:
De:
fonte
Eu tive esse problema hoje (19 de fevereiro de 2016) e o resolvi instalando a versão mais recente do Mongoose. Tente colocar isso no seu package.json:
Espero que ajude. Resolvi isso para mim!
fonte
O problema é que quando você instala o mangusto via npm, ele assume que você tem o python instalado no Windows e tenta criar as bibliotecas necessárias. Como você não tem python, ele pula a fase de construção com um aviso. Mas quando você inicia seu aplicativo, os módulos necessários não existem, então você recebe esse erro.
Para fazer as coisas corretamente, instale primeiro o python (versão 2.7) no seu computador em: https://www.python.org/downloads/ ou se você tiver instalado o chockolatey, basta digitar
choco install python2
.Em seguida, verifique se sua variável python está definida. Você pode configurá-lo no prompt de comando, como:
(Claro que você deve alterar o caminho de acordo com a sua localização do python) Em seguida, instale o node-gyp:
Agora você pode reinstalar o mangusto ou qualquer outro módulo que esteja causando o problema:
Desta vez, você verá algumas linhas amarelas em vez das vermelhas, mas o erro desaparecerá.
fonte
--msvs-version=2012
ou2013e
dependendo do que você instalou. por exemplonpm install mongoose --msvs-version=2012
Resolvi esse problema instalando a versão mogoose
3.8.23
fonte
Isso funcionou para mim. Pesquise no seu espaço de trabalho o texto:
Você provavelmente o encontrará nos módulos mongose e monk.
Substitua cada um:
com:
Isso é tudo!
fonte
Tente
npm install [email protected]
e também substituabson = require('../build/Release/bson');
parabson = require('../browser_build/bson');
em node_modules / bson / ext / index.jsfonte
Isso funcionou para mim:
Vá para o arquivo (no seu projeto):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
e mude:
bson = require('../build/Release/bson');
para:
bson = require('bson');
Referência: https://github.com/mongodb/js-bson/issues/118
fonte
node_modules
diretório no controle de origem?Resposta curta
Instale a versão mais recente do mongodb.
Um pouco mais de resposta
Verifique se o seu package.json está usando a versão mais recente do mongodb, remova o node_modules / mongodb e faça a instalação do npm novamente. Se você não usou o mongodb como dependência direta, tente descobrir qual pacote está usando o mongdb. Eu usei:
Atualizei ./sails-mongo/package.json para:
Em seguida, remova node_modules / mongodb e instale o npm novamente. Parece bem agora.
Resposta ainda mais longa
Não gosto da maneira atual sugerida de usar
Desde que analisamos ../browser_build/bson.js, um arquivo de linhas de 4k +, que parece também uma implementação "não nativa". Portanto, apesar de não apresentar queixas, ainda está "usando a versão JS pura", o que significa desempenho mais lento.
Olhando https://github.com/mongodb/js-bson/issues/145 e https://github.com/mongodb/js-bson/issues/165 , parece que o problema foi causado por:
Então, tentei remover todo o node_modules e ainda recebi o mesmo erro. E olhando para o package.json do node_modules / mongodb, sua versão ainda é 1.4.26, não a mais recente 2.1.7.
Aparentemente, meu mongodb vem como uma dependência de outro pacote que instalei: sails-mongo. Modificar o package.json do sails-mongo e refazer a instalação do npm finalmente resolve o problema.
fonte
Implantando o Keystone JS CMS , tive o mesmo erro e acho que a solução mais elegante é a seguinte:
Instalar
npm-check-updates
:No diretório do site keystone, onde
package.json
está localizado, verifique as dependências:Atualize todos os pacotes:
E finalmente, se você escolher
jade
modelos, talvez seja necessário instalar ojade
módulo explicitamente:fonte
A resposta marcada está completamente errada. Tudo o que faz é ocultar a instrução de log do console e não faz nada que resolva o problema real. Você também pode fechar os olhos e obterá o mesmo resultado.
O problema é causado pelo node-gyp e apenas isso. Seu objetivo é compilar extensões nativas para certos módulos, como o bson.
Se isso não acontecer , o código retornará para a versão JS e gentilmente informará você através da mensagem informativa:
Presumo que a pergunta seja realmente sobre como compilar a extensão C ++ nativa, em vez de simplesmente não ver a mensagem, então vamos abordar isso.
Para que o node-gyp funcione, o node-gyp deve estar atualizado com seu nó e o compilador C ++ (que serão diferentes com base no seu sistema operacional). Tão importante quanto o seu módulo também deve estar atualizado.
Primeiro desinstale e reinstale o node-gyp
Agora você precisará desinstalar e reinstalar completamente qualquer módulo do nó no seu aplicativo (que inclui também os módulos instalados pelos requisitos) que possuem o bson. Isso deve resolver o erro. Você pode procurar por 'Release / bson' e encontrar os culpados.
E então desinstale e reinstale esses módulos.
Mais fácil é refazer a
node_modules
pasta inteira :Se você ainda tiver problemas, então 1) seu módulo está desatualizado - verifique o rastreador de problemas no repo ou 2) você tem um conflito em potencial - às vezes podemos ter um node-gyp local, por exemplo. Você pode executar
node-gyp
sozinho e verificar as versões.fonte
Ao criar a configuração para
www.spotdekho.com
em uma novawindows10
máquina, não consegui executar o comando"nodemon web.js"
devido ao mesmo erroFoi corrigido pelas etapas abaixo:
Isso resolverá o problema.
PS: Estou usando o mangusto versão 4.8.8.
Obrigado :), espero que ajude alguém.
fonte
No meu caso, os bits que acompanham o mongoose (
npm install mongoose
) têm uma versão funcional domongodb
pacote em suanode_modules
pasta.As etapas a seguir me salvaram o trabalho de solucionar o problema:
npm install mongoose
node_modules\mongoose\node_modules\mongodb
para minhanode_modules
pasta raiz (substituindo qualquer versão fornecidanpm install mongodb
)Failed to load c++ bson extension...
erro (ou altere o código para silenciar o problema)fonte
Quando eu estava recebendo erros como esse, estava atualizando do nó v0.10 para o nó v4.xx. O que eu precisava fazer era instalar uma versão mais recente do gcc (acho que tinha o gcc v4.4.x ou algo assim). Atualizei para o gcc 4.7.2 e as coisas funcionaram depois disso.
fonte
Eu também tive o mesmo problema com bson.
tentando uma versão mais recente do mangusto
resolveu o problema.
Massimo.
fonte
Execute este comando para desinstalar o mongoose
npm uninstall --save mongoose
- depois reinstale-o, mas desta veznpm
instale automaticamente a versão mais recente do mongoose runnpm install --save mongoose
Isso funcionou para mim.fonte
Infelizmente, todas as respostas acima são apenas metade certas. Demorou muito tempo para descobrir isso.
O Mongoose bson install via npm lança um aviso e causa o erro ...
Isso funciona como mágica !!
fonte
Se você estiver usando o Windows 8.1, convém instalar os módulos npm com o compilador correto do visual studio.
Eu tenho o Visual Studio 2012 instalado, este comando funciona para mim. (após excluir o diretório node_modules)
npm install --msvs_version = 2012
Por alguma razão, o node-gyp está tentando usar a versão incorreta do compilador do Visual Studio. Notei também que o comando "npm install" estava imprimindo avisos sobre dependências não-node-gyp ao instalar os módulos mongodb e mongoose.
Depois de usar o msvs_version correto, os avisos de instalação do npm desapareceram e o aviso do console ao executar meu aplicativo nodejs.
Você também pode querer certificar-se de ter a versão correta do Python 2.7.X instalada e não o Python 3.0.X.
Você também precisará garantir que o python esteja no seu caminho env.
fonte
npm install --msvs_version=2012
A única coisa que me ajuda no Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121
Reinstale o nó e o python com versões x32.
Passei muito tempo com esse erro (falha ao carregar a extensão c ++ bson) e, finalmente, quando instalei o módulo
node-gyp
(para construir addons nativos) e até instalei o SDK do Windows com o visual studio - o nodejs não reconheceu o módulo bson.node montado como módulo. Depois de reinstalar, o problema se foi.Mais uma vez, o que significa esse erro?
Na verdade, nem é um erro. Você ainda pode usar o mangusto. Mas, neste caso, em vez da rápida realização nativa do módulo bson, você obtém o js-realization, que é mais lento. Eu vi muitas dicas como: "editar caminho no fundo do node_modules ..." - que é totalmente inútil porque não resolve o problema, mas apenas desativa as mensagens de erro.
fonte
Tente isso
npm install bson
enpm update
fonte
Você nunca deve alterar arquivos na pasta da biblioteca NODE_MODULES.
Esses arquivos são resultado do
npm install
comando.Basicamente, acho que para os usuários do Windows - o caminho certo é usar a VM. É o que estou fazendo quando trabalho em casa.
Tudo que você precisa:
for CentOS: yum install gcc gcc-c++ make openssl-devel
for Debian/Ubuntu: apt-get install build-essential
e então
npm install
ou, se você já fez isso -npm update
fonte
A melhor solução para mim foi atualizar do node-mongodb 1.x para 2.x.
fonte
Sei que esse segmento tem mais de um ano, mas me ajudou, embora com um módulo diferente.
Eu instalei o mongoose-post-findv0.0.2 e esse problema começou. Para corrigi-lo, usei as sugestões e naveguei para \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext e abri o arquivo index.js.
O arquivo começa com um bloco try catch tentando exigir a versão bson correta
esta é a versão corrigida. O que estava acontecendo é que ele tentou carregar o bson a partir de ../build/Release/bson, não conseguiu encontrá-lo e caiu na armadilha. Tentou-se carregar o bson novamente em ../build/Release/bson e, é claro, falhou. Então, eu mudo o caminho na captura para procurar em ../browser_build/bson. Isso resolveu o erro.
Coloco isso por completo.
fonte
Eu tive o mesmo problema após a atualização da versão do Ubuntu para 16.04. Eu resolvi dessa maneira, espero que ajude.
fonte
No nosso caso, a razão pela qual a versão c ++ bson não foi encontrada foi porque estávamos atrás de um proxy corporativo e algo no processo de compilação do BSON precisa procurar os arquivos. Quando examinamos node_modules / bson / builderror.log, vimos um erro como este:
gyp WARN install got an error, rolling back install gyp ERR! configure error gyp ERR! stack Error: connect ECONNREFUSED gyp ERR! stack at errnoException (net.js:904:11) gyp ERR! stack at Object.afterConnect [as oncomplete] (net.js:895:19)
O que sugeriu que o proxy pode ser o problema. A definição das variáveis de ambiente http_proxy e https_proxy resolveu o problema.
Desculpe por despertar comentários sobre isso, mas eu queria postar isso para qualquer pessoa que acerte isso no futuro, pois esse tópico foi muito útil para resolver nosso problema.
fonte
Tentei instalar o npm mongoose --msvs_version = 2012, se você tiver vários visuais instalados, funcionou para mim
fonte
bson.js
Código da primeira cópia debrowser_build folder
segundo crie um novo arquivo
bson.js
e cole o códigoterceiro, salve o novo arquivo próximo a in
index.js
.fonte
Estou trabalhando com o SO Windows 8.1 e tive o mesmo problema. A fonte do problema foi a versão do Python. Encontrei o problema de origem, revise o arquivo ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log.
Eu instalei a versão correta do Python (2.7.9 para 64 bits) e resolveu o meu problema.
Nota: A versão instalada do python deve ser igual ou superior a 2.7.5 e inferior a 3.0.0
fonte
Eu tentei,
bson = require('../browser_build/bson');
mas acabei encontrando outro erroFinalmente, eu
npm update
corrigi esse problema simplesmente por , isso corrigirá o módulo bson no mangusto.fonte
Então, eu tenho o mesmo problema e acontece que o URL mongoDB especificado não existe. Portanto, para corrigir isso, você precisa ir na pasta ".. \ server \ config \ environment" e editar no arquivo "development.js" o link para o mongoDB.
Exemplo:
Portanto, altere "uri: 'mongodb: // localhost / test2-dev'" para algum caminho real para o banco de dados do mongoDB.
Ficarei feliz se meu post ajudar alguém ...
fonte
localize no módulo npm mongodb ..node_modules \ mongodb \ node_modules \ bson \ ext \ index.js
e mude o caminho para a versão js no bloco catch
para
bson = require('../browser_build/bson');
fonte