Mongoose: js-bson: falha ao carregar a extensão c ++ bson, usando a versão JS pura

Criado em 7 set. 2014  ·  115Comentários  ·  Fonte: Automattic/mongoose

Cliquei em Fork , clonei o repo e anexei este módulo ao meu projeto. Eu recebo este erro

js-bson: Failed to load c++ bson extension, using pure JS version

nodejs v0.11.13 , osx mais recente. Parece que o problema é com o módulo mongodb (funciona com bson 0.2.15).

Comentários muito úteis

Ao usar o Keystone, isto funcionou para que eu superasse aquele erro:

adicione o seguinte aos meus package.json deps:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

então

npm install

finalmente

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Agora eu não entendo o erro.

Todos 115 comentários

Mesmo problema

Mesmo problema aqui; retroceder para 3.8.15 resolve o problema no OSX em 0.11.13.

Sim, eu também percebi isso. Seu código ainda funcionará, mas você pode ter um desempenho pior. Vou consertar isso para a próxima versão.

OK

Mesmo problema

Mesmo aqui. Permanecerá 3.8.15 até as mudanças.

Ok .... Mesmo problema!

alguma atualização disso?

Eu tive o mesmo problema (mangusto 3.8.19 e nó 0.10.33). Acabei de resolver isso depois de perceber que npm install (e npm update) compila a versão de depuração do bson, mas index.js (colocado em node_modules / mongoose / node_modules / mongodb / node_modules / bson / ext / index.js no meu caso) requer a versão de lançamento. Como você pode ver nesta seção do código:

try {
    // Load the precompiled win32 binary
    if(process.platform == "win32" && process.arch == "x64") {
      bson = require('./win32/x64/bson');  
    } else if(process.platform == "win32" && process.arch == "ia32") {
      bson = require('./win32/ia32/bson');  
    } else {
      bson = require('../build/Release/bson');  
    }   
} catch(err) {
    // Attempt to load the release bson version
    try {
        bson = require('../build/Release/bson');
    } catch (err) {
        console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

Entrei no diretório de compilação e simplesmente compilei o bson com o seguinte comando

make BUILDTYPE=Release all

Em algum lugar do repositório, ele foi alterado de Release para Debug, mas eu não pesquisei nele.

@ Gas3 qual versão de npm você está usando e em qual plataforma você está executando isso? Isso realmente não deveria estar acontecendo no nó estável 0.10.x.

Além disso, consegui reproduzir isso - parece um npm install limpo com npm 2.0.0 (a versão que vem com o nó 0.11.14) e o nó 0.11.14 faz isso funcionar bem. Ou seja, rm -rf node_modules && npm install . Vocês podem verificar se isso ajuda?

acima do nível do mar 2.1.7 em Os X 10.9.5

Você pode tentar uma instalação npm limpa - matar node_modules e então npm install ? Isso realmente soa como um problema de alterar as versões do nó sem reconstruir o js-bson.

+1

@brunobatista tente rm -rf em seu node_modules e faça uma instalação npm limpa.

Mesmo problema:
versão do nó: v0.10.35
versão npm: 2.1.18

Mesmo problema aqui:
SO: Arch Linux
Versão do nó: v0.10.35
versão npm: 2.1.18
Versão do Mongoose: 3.8.21

Tentei 'rm -rf node_modules; npm cache clean; npm install 'sem sorte.
Também tentei com o Mongoose versão 3.8.15 com os mesmos resultados.

O mesmo problema estava no Ubuntu 14.04. Meus passos:
1) Atualizado npm para 2.1.18 de 1.3
2) limpeza de cache npm
3) rm -rf node_modules
4) npm i
Funciona!

Mas vejo um erro no Windows 8.1. Este "requer" gera o erro:

bson = require('./win32/ia32/bson'); 
The specified procedure could not be found.
C:\Users\d.kiriliuk\Projects\vozovoz\node_modules\mongoose\node_modules\mongodb\node_modules\bson\ext\win32\ia32\bson.node

O arquivo bson.node existe

Planos para consertar isso?

Mesmo problema

OS: OSX 10.10.2
Versão do nó: v0.10.36
versão npm: 2.3.0
Versão do Mongoose: 3.8.22

Tentei 'rm -rf node_modules; npm cache clean; npm install 'sem sorte.

Quando preciso do mangusto, obtenho esta saída:

[Error: Module did not self-register.]
js-bson: Failed to load c++ bson extension, using pure JS version

+1

Mesmo problema!!

SO: UBUNTU 14.04 (x64)
versão do nó: 0.12.0
versão npm: 2.5.1
versão do mangusto: 3.8.21

[Error: node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: undefined symbol: node_module_register]

(err): js-bson: Failed to load c++ bson extension, using pure JS version

Alguma solução alternativa ou planos para consertá-lo?

Não encontrei nada :(
Tento reinstalar meus pacotes ...
reconstruir bson com node-gyp
limpe o cache npm e ....
nada aconteceu.
ainda recebo esta mensagem

Eu atualizo meu pacote mongoose para 3.9.7
o problema foi corrigido, mas recebi esta mensagem do mangusto:

##############################################################
#
#   !!! MONGOOSE WARNING !!!
#
#   This is an UNSTABLE release of Mongoose.
#   Unstable releases are available for preview/testing only.
#   DO NOT run this in production.
#
##############################################################

FIXO!
Eu uso a última versão estável do mangusto (3.8.23)
o problema corrigido :)

Em geral, "consertar" isso não é possível, porque essa mensagem de erro pode significar várias coisas. Isso pode significar que você não tem uma versão adequada do python ou um compilador C ++ apropriado instalado (por causa do node-gyp), pode significar que você trocou as versões do node de quando o npm instalou o mongoose, etc.

Você ganha!

Por favor, me desculpe, foi minha culpa.

builderror.log:
gyp ERR! configurar erro
gyp ERR! stack Error: o executável Python "python" é v3.4.2, que não é compatível com gyp.
gyp ERR! stack Você pode passar a opção --python para apontar para Python> = v2.5.0 & <3.0.0.
gyp ERR! pilha em failPythonVersion (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:108:14)
gyp ERR! pilha em /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:97:9
gyp ERR! pilha em ChildProcess.exithandler (child_process.js: 735: 7)
gyp ERR! pilha em ChildProcess.emit (events.js: 110: 17)
gyp ERR! pilha em MaybeClose (child_process.js: 1008: 16)
gyp ERR! pilha no Socket.(child_process.js: 1176: 11)
gyp ERR! pilha em Socket.emit (events.js: 107: 17)
gyp ERR! empilhar em Pipe.close (net.js: 476: 12)
gyp ERR! Sistema Linux 3.14.27-1-lts
gyp ERR! comando "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd / home / node / sites / hellooo / src / node_modules / mongoose / node_modules / mongodb / node_modules / bson
gyp ERR! node -v v0.12.0
gyp ERR! node-gyp -v v1.0.2
gyp ERR! não está tudo bem

No meu caso, a solução foi:

npm config set python python 2.7

Reinstale o mangusto e trabalhando.

Não prestei atenção a estas linhas da saída de 'npm install':

[email protected] install / home / node / sites / hellooo / src / node_modules / mongoose / node_modules / mongodb / node_modules / bson
(reconstrução 2 do node-gyp> builderror.log) || (saída 0)

Isso significa que houve um erro ao construir o bson que eu não tinha percebido.

Muito obrigado @ vkarpov15.

Sim, esqueci de dizer que atualizei minha configuração npm python.

tnx @ vkarpov15

Oi,
Eu executei "rm -rf node_modules && npm install" e vejo abaixo.

/

[email protected] install c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modu
lesmongodb \ node_modules \ kerberos
(reconstrução 2 do node-gyp> builderror.log) || (saída 0)

c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modulesmongodb \ node_modules \
kerberos> node "c: \ Arquivos de programas \ nodejs \ node_modulesnpmbin \ node-gyp-bin .... \
node_modules \ node-gypbin \ node-gyp.js "reconstruir

[email protected] install c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modules
mongodb \ node_modulesbson
(reconstrução 2 do node-gyp> builderror.log) || (saída 0)

Quando eu executo meu servidor, recebo o erro abaixo ..

{[Erro: Não é possível encontrar o módulo '../build/Release/bson'] código: 'MODULE_NOT_FOUND'}

js-bson: falha ao carregar a extensão c ++ bson, usando a versão JS pura
c: \ Raj \ project \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170
lançar novo erro (msg);
^
Erro: Route.get () requer funções de retorno de chamada, mas obteve um [objeto Indefinido]
na rota.(c: \ Raj \ project \ meandemo \ node_modules \ express \ lib \ route
r \ route.js: 170: 15)
em Array.forEach (nativo)
em Route. (função anônima) como get
em EventEmitter.app. (função anônima) (c: \ Raj \ project \ meandemo \ node_modul
es \ express \ lib \ application.js: 429: 19)
em Object.(c: \ Raj \ project \ meandemo \ server.js: 23: 5)
em Module._compile (module.js: 460: 26)
em Object.Module._extensions..js (module.js: 478: 10)
em Module.load (module.js: 355: 32)
em Function.Module._load (module.js: 310: 12)
em Function.Module.runMain (module.js: 501: 10)

Aqui estão os detalhes da minha versão:
SO: Windows 7
nó: 0.12.0
mangusto: 3.8.23
npm: 2,5.1

Por favor sugira

Olá @rajnav , Dê uma olhada em builderror.log, ele pode mostrar a origem do problema.

Mesmo problema, mas builerror.log contém apenas uma linha:

child_process: customFds option is deprecated, use stdio instead.

em projeto / node_modules / mongoose / node_modules / mongodb / node_modules / bson

Estou usando osx yosemite e node 0.12.x

Também recebi este aviso, mas funcionou para mim.

Estou usando o fedora 20 com node 0.12.xe recebi este aviso. É seguro continuar trabalhando com isso?
Não tive problemas com o nó 0.10.x

Parece um aviso de reprovação, mas não tenho certeza sobre os efeitos colaterais. Como eu disse anteriormente, está funcionando bem para mim.

@rajnav o erro parece estar no Express. O erro bson não encontrado é um aviso de que não foi possível encontrar o binário bson compilado nativo, não deveria estar causando um travamento.

Além disso, vi o aviso de suspensão de uso da opção customFds. Ainda deve funcionar. Vou investigar mais sobre de onde isso está vindo.

Os arquivos builderror.log fornecem uma resposta.
Passei um sinalizador --python=python2.7 com instalação npm, exatamente como ele pediu, e sem mais erros. Funcionou em ambas as instalações, windows 64bit e ubuntu.

npm install --python=[path to python] mongoose

PS
Na máquina Windows, ainda tenho
child_process: customFds option is deprecated, use stdio instead.
no arquivo builderror.log, mas isso não faz com que nenhum erro apareça no console do nó ao executar o aplicativo.

mangusto: 3.8.24
npm: 2.7.9
os: Arch Linux

fazendo
rm -rm node_modules/
npm cache clean
npm config set python python2.7
npm install
trabalhou para mim.

faça uma limpeza npm install
aconteceu comigo depois de atualizar o nó.

Mongoose 3.8.21
Ubuntu 14.04.2

Usando

npm config set python python2.7
cd node_modules/mongoose/node_modules/mongodb/node_modules/bson
npm install

funcionou para mim!

Então python é um requisito para usar o mangusto ??? Não está claro na documentação, então não tenho permissão para instalá-lo no ambiente de produção. (A menos que documentado ...) :(

Mongoose requer apenas Python na medida em que node-gyp (node ​​wrapper em torno do sistema de compilação v8) requer Python . Python não é uma dependência de tempo de execução para mongoose. Se você precisar de documentação de que o mongoose precisa do Python para construir o analisador C ++ bson, clique aqui .

No entanto, mais uma vez, o mongoose funcionará conforme o esperado, mesmo se não puder construir o analisador bson. O único recurso que exige que o node-gyp seja bem-sucedido é o mecanismo de autenticação Kerberos.

Muito obrigado,

@jayflo isso é

+1 Aqui mongodb / js-bson / issues / 118

Isso resolverá seus problemas:

$ cd node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/
$ npm install

Portanto, era bastante óbvio para mim que quem integrou o mongodb-core ao mongodb ao mongoose é o culpado. Alguém perdeu uma instalação do npm lá. Existe uma maneira de escalar isso, já que claramente milhares de usuários são afetados e o impacto (nos negócios) pode ser considerado com segurança como muito alto, pelo menos na minha opinião, mas eu me enganei antes.

Ninguém perdeu uma instalação do npm, ele funciona bem se o seu sistema estiver configurado para executar o node-gyp corretamente. Dito isso, configurar seu sistema para executar node-gyp corretamente é um grande problema, então estamos considerando pré-construir binários e fazer com que o npm install tente baixar um binário pré-compilado primeiro, a menos que você desative.

Quanto ao impacto nos negócios, mais uma vez, isso é um _aviso_, não um _erro_.

Obrigado pela sua resposta esclarecedora. grunt e node não iniciarão se eu não instalar no diretório mongo-core, portanto, este aviso é um obstáculo, pelo menos em meu cenário e obviamente (role para cima) em muitos outros. Posso ver que, da sua perspectiva, isso não é da conta do seu projeto, mas falha ao rodar do mesmo jeito no Linux, Mac e Windows.

Am 17.04.2015 um 15:33 schrieb Valeri Karpov [email protected] :

rning, não é um erro.

se eles não começarem, então algo está errado. Esta mensagem é um aviso e não o impedirá de iniciar o grunt ou o nó. Você pode me mostrar o resto da saída do comando npm install original (antes de executar o npm install no mongodb-core)?

Mais uma vez, se você quiser se livrar deste aviso agora, a única maneira agora é configurar as dependências do node-gyp .

obrigado vkarpov15 por continuar neste tópico. só quero lançar um +1 meu para que você saiba que há outro com o mesmo problema. Dito isso, ainda consigo executar meu aplicativo, portanto, aceitarei seu aviso de que não se trata de um erro, mas de um aviso. portanto, esperamos que o aviso seja resolvido em uma atualização futura para essa tranquilidade extra. obrigado novamente.

fyi ~ este aviso surgiu depois que eu atualizei o nó de 10 para 12 ...

@camachowebworld tente limpar seus node_modules e reinstalar rm -rf node_modules && npm install . Normalmente, quando você faz uma atualização de versão de nó principal, você precisa reconstruir quaisquer extensões nativas, incluindo bson. A reinstalação deve resolver o problema.

Ubuntu 14.04.1 LTS (AWS EC2)
Tive que executar "sudo apt-get install build-essential"

Talvez possa ajudar alguém.

vkarpov15 obrigado por responder a msg. sry sobre a falta de experiência. você está dizendo, "tente limpar seus node_modules e reinstalar rm -rf node_modules && npm install". eu estou no windows. onde executo esses comandos? tento executar "rm -rf node_modules" na pasta do meu projeto, ele me diz "rm não é .... comando".

Basta excluir node_modules no Windows Explorer, a mesma coisa. Em seguida, execute npm install onde quer que você o tenha executado originalmente.

Sugestão geral, use git bash + mingw se você estiver fazendo node dev no Windows

Recebi o mesmo erro logo após atualizar o nó para a versão 0.12.3 no Windows 7 (x64).
Já instalei: node-gyp, node-pre-gyp, python, .NET SDK -> depois disso, não recebo mais mensagens de erro sobre montagem. E para a pasta do mangusto 3.8.28 mongoose\node_modules\mongodb\node_modules\bson\build\Release
contém estes arquivos:

/obj
/bson.exp
/bson.lib
/bson.node
/bson.pdb

Mas mensagem

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }  
js-bson: Failed to load c++ bson extension, using pure JS version

ainda aparece

UPD : eu encontrei a solução para mim.

Para usuários iojs:

As versões mais recentes não suportam bem o mangusto. Downgrade para a última versão estável v2.0.0 (use nvm pelo amor de Deus). E vai funcionar como um encanto!

Adicionando essa informação por precaução, aqui em nossa empresa tivemos esse problema recentemente.

No Windows, resolvi esse problema alterando uma linha em:

node_modulesmongodb \ node_modulesmongodb-core \ node_modulesbson \ node_modulesbons-ext \ ext \ index.js

a linha depois de:

// Tenta carregar a versão bson de lançamento
Experimente {

from: bson = require ('../ build / Release / bson');
para: bson = require ('../../../ lib / bson / bson');

A mensagem de erro:
{[Erro: Não é possível encontrar o módulo '../build/Release/bson'] código: 'MODULE_NOT_FOUND'}
js-bson: falha ao carregar a extensão c ++ bson, usando a versão JS pura

agora se foi e o mongo parece funcionar bem. Usando o driver mongodb ver. 2.0.33

Espero que ajude.

Alguém pode confirmar se a solução do ChrisGciso é viável? Estamos agora enfrentando esse mesmo problema de um ano com Atlassian Bamboo. Alguma ideia de como consertar com o Bamboo?

Não é uma solução, apenas um hack. Da mesma forma, você pode simplesmente remover as saídas do console nesse arquivo.

Estou lutando para entender que como o fallback para JS Bson e o aviso de que seu desempenho não é tão bom quanto a implementação de C ++ é apenas um problema cosmético.

Stephan Kristyn
Edelweißstr. 4
81541 Munique

+49 151 5461 8086
s. [email protected]
http://meshfields.de

Em 9 de junho de 2015 17:38 +0200, [email protected] , escreveu:

Não é uma solução, apenas um hack. Da mesma forma, você pode simplesmente remover as saídas do console nesse arquivo.

-
Responda a este e-mail diretamente ou veja-o no GitHub (https://github.com/Automattic/mongoose/issues/2285#issuecomment-110406406).

@ChrisGciso que está apenas varrendo o aviso para debaixo do tapete. Isso significa que ele usará o analisador JavaScript bson sem verificar o compilado.

@nottinhill Infelizmente não tenho experiência com bambu, então não posso ajudar. Se é um 'problema cosmético' depende do seu caso de uso - por exemplo, em um ambiente de CI como o bambu, você geralmente se preocupa muito em economizar um microssegundo aqui e salvar alguns bytes de memória ali. Em seu ambiente de produção é onde potencialmente importa, e se você realmente precisa de um pouco mais de desempenho, configurar dependências de node-gyp e reinstalar é o que você precisa fazer.

Como está, uma das coisas que esperamos fazer no futuro é fechar a lacuna entre o analisador bson compilado e o analisador bson JavaScript. Se você deseja contribuir, é mais do que bem-vindo em http://github.com/mongodb/js-bson :)

@ vkarpov15 Varrer as mensagens de "Erro" para debaixo do tapete, se elas não tiverem uma resolução simples e não causarem nenhum impacto material no desempenho, pode ser melhor do que misturá-las com erros reais que refletem problemas reais. Ver esse erro repetidamente por meses não é bom, a menos que possa ser resolvido, especialmente para novas pessoas que desejam usar o driver. Existe uma solução melhor que não envolva uma série de etapas complexas para apenas se livrar da mensagem de erro?

Talvez devesse ser rotulado como "Info" em vez de "Erro"?

Um ponto justo. Existe o sinalizador native_parser que deve impedir o mongodb de procurar a versão compilada do js-bson.

Estou no Fedora 22, nó v0.12.4, instalado esta noite

npm config set python python 2.7
=> resolveu meus problemas, thx

Eu estava tendo esse problema aqui em um contêiner Docker Archlinux e minha solução foi:

$ pacman -S gcc make nodejs npm python2
$ npm config set python python2.7
$ npm install -g node-gyp

Mongoose versão 4.0.5

Em relação ao erro Bamboo - eu _solvi_ o problema criando uma tarefa npm e definindo sua variável de ambiente como de costume, em seguida, os seguintes parâmetros:

install node-gyp

Você verá reclamações sobre a ausência do sinalizador global, mas no Bamboo, pelo menos, não preferimos instalações globais devido à flexibilidade de migração.

O erro de

build   17-Jun-2015 10:30:53    Running "mochaTest:src" (mochaTest) task
build   17-Jun-2015 10:30:53    { [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
error   17-Jun-2015 10:30:53    js-bson: Failed to load c++ bson extension, using pure JS version

Sim, funcionou para mim, obrigado.

Na verdade, tive que instalar o gcc e o make também, para que pudesse compilar o cpp em um binário.

-
Frederico Souza
Cofundador do RioBus - http://riob.us/ http://riob.us/
Telefone: (+55 21) 97285-8787
Rio de Janeiro, Brasil

Em 17/06/2015, à (s) 05:22, Stephan Kristyn [email protected] escreveu:

Em relação ao erro Bamboo - resolvi o problema criando uma tarefa npm e definindo sua variável de ambiente como de costume e, em seguida, os seguintes parâmetros:

instalar node-gyp
Você verá reclamações sobre a ausência do sinalizador global, mas no Bamboo, pelo menos, não preferimos instalações globais devido à flexibilidade de migração.

-
Responda a este e-mail diretamente ou visualize-o no GitHub https://github.com/Automattic/mongoose/issues/2285#issuecomment -112714644.

Eu tive esse problema. O connect-mongo foi atualizado para 0.8.2 e o mongoose para a versão 4.0.7 e funcionou bem.

Nó v0.12.2, NPM 2.13.0, OSX 10.10.4

Mesmo problema usando sailsjs

Atualize para mongoose> = 4.0.6 para que o bson não use mais extensões C ++. De qualquer forma, esta mensagem é apenas um aviso.

Atualizar para 4.0.6 funcionou para mim, obrigado vkarpov15.

Mesmo problema. use o xUbuntu 15.04.
Tentei instalar o pacote libkrb5-dev, nodejs-legacy. e atualize o Node.js v4.1.0, npm 2.14.3, mongoose 4.1.7. mas não funciona :-(

Você já tentou uma reinstalação limpa? Além disso, não se preocupe com a libkrb a menos que se preocupe com a autenticação do Kerberos, o mongoose funcionará bem sem ela.

@TimePower Você tentou instalar o node-

Estou recebendo o seguinte erro ao tentar usar algo relacionado ao Mongoose:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version

Node 4.1.0 e Mongoose 4.1.10.

rm -rf node_modules && npm cache clean && npm install @jackdbernier

Além disso, é um aviso, não um erro.

Atualize para mongoose> = 4.0.6 para que o bson não use mais extensões C ++.

Estou usando o Mongoose 4.1.10 e ainda estou recebendo o erro.

Eu resolvi rebaixar mongodb para 2.6

rm -rf node_modules && npm cache clean && npm install
não funciona para mim, após o mesmo erro

O mesmo problema aqui:

rm -rf node_modules && npm cache clean && npm install
não funciona para mim, após o mesmo erro

js-bson: Failed to load c++ bson extension, using pure JS version

Minha configuração:

  • Máquina AWS Ubuntu: Ubuntu 14.04.1 LTS
  • node.js v0.12.7
  • Mongoose 4.1.12
  • MongoDB 2.6.5

Tudo começou quando eu atualizei nodejs, atualizar para Mongoose 4.1.12 também não ajudou.

Como isso ainda é um problema ?? Será que devo me preocupar em deixar mais alguma informação aqui ... todo mundo já fez isso por mim ... Alguém vai estabilizar isso ou o quê ??

Não é um erro, apenas um aviso. Além disso, há informações suficientes por aí / neste tópico sobre como configurar o node-gyp corretamente.

@ vkarpov15 Obrigado pela resposta. Isso é um erro, não um aviso: a instalação do npm falha após essa mensagem. Você pode me dizer mais sobre como isso se relaciona com o node-gyp.

O npm install não exibe essa mensagem, então duvido muito.

Duvido que esteja relacionado ao node-gyp de alguma forma. Estou no OS X 10.11, tenho usado _muito_ de dependências nativas como node-sass, mesmo antes de lançar binários para novas versões do Node.js e compilá-los corretamente. Então, minha configuração está boa. E ainda:

node keystone.js 
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version

Instalei todas as dependências diretamente do Node.js 4.

@ vkarpov15 você está certo, erro meu. O erro ocorreu ao tentar requerer o módulo no nó, após a atualização com npm. Tentei fazê-lo funcionar por várias horas, mas nenhum dos conselhos dados online parecia ajudar, então fiz o downgrade novamente e não olhei para ele desde então.

Eu acabei de resolver isso.

Quando você instala o módulo mongoose por npm, ele não tem um módulo bson integrado em sua pasta. No arquivo node_modules / mongoose / node_modules / mongodb / node_modules / bson / ext / index.js, mude a linha

bson = require ('../ build / Release / bson');
para

bson = requer ('bson');

O mesmo problema no FreeBSD.

Como podemos construir a extensão C ++ BSON?


Aqui está o que npm install disse:

> [email protected] install /usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'
  SOLINK_MODULE(target) Release/obj.target/kerberos.node
  COPY Release/kerberos.node
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'

> [email protected] install /usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
  CXX(target) Release/obj.target/bson/ext/bson.o
bson.target.mk:88: recipe for target 'Release/obj.target/bson/ext/bson.o' failed
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
[email protected] node_modules/crypto

[email protected] node_modules/bson

mesmo problema aqui

@ vkarpov15 Eu confirmo o que @mgol está dizendo. Há outro problema além de uma configuração node-gyp errada. Eu também tenho muitos outros módulos nativos construindo corretamente. Nenhum erro ocorre durante a instalação.

Há um problema com node v4 que impede o c++ bson extension , resultando no aviso js-bson: Failed to load c++ bson extension, using pure JS version .

Aqui está o registro completo quando eu instalo mongoose ( [email protected] ) em node v4

apairet$ rm -rf node_modules/mongoose
apairet$ npm install
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o

> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o

[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected])

Para fins de integridade, instalei a versão mais recente de mongoose ( [email protected] ), mas o erro permaneceu o mesmo:

apairet$ npm install mongoose<strong i="22">@latest</strong>
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Diga-me se posso fornecer informações adicionais.
rgds

@antoinepairet qual versão do nó exatamente? Existem muitos lançamentos v4.

Obrigado pela sua resposta rápida @ vkarpov15. Eu realmente aprecio isso :-).
Desculpe por não mencionar a versão do nó no meu post anterior. Testei 3 versões de nó:
4.2.1 , 4.1.0 e 4.0.0 com o seguinte procedimento:

  1. nvm install 4.1.0
  2. rm -rf node_modules /
  3. npm install
  4. teste o aplicativo e veja se o aviso ocorre

Cada vez tendo js-bson: Failed to load c++ bson extension, using pure JS version

Eu executei os testes estendidos no OSX. No Linux, testei apenas 4.2.1 .

Deixe-me saber se posso fornecer mais informações / testes.
obrigado novamente

PS: @AsyaHristeva Não é uma questão de C++ IDE. outros módulos nativos são construídos perfeitamente :-)

Hmm em 4.1.1 [email protected] funciona bem no meu mac, e de qualquer forma esse erro não deve acontecer porque [email protected] usa [email protected], que não usa uma extensão C ++ para BSON. Eu recebo este erro com [email protected], mas isso é porque as versões do driver mongodb legado, [email protected], realmente não oferecem suporte a node> = 4 .

Estou recebendo o mesmo erro com o Node v4.2.4, Mongo v2.6.11, OSX 10.11.2

npm install [email protected]
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.

> [email protected] install /Users/jw/Work/sp_app/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/latest/node_modules/npm requires request@'~2.67.0' but will load
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/request,
npm WARN unmet dependency which is version 2.27.0
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Quando executo meu aplicativo, recebo:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version

Eu me pergunto se esse é um problema do OSX porque não tenho problemas no Linux. Isso pode ter algo a ver com o gcc, o compilador Clang padrão instalado pelo XCode.

gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix

@ vkarpov15 está certo, atualize o mongoose para 4.4.5 corrigir este problema

@ vkarpov15 , Estou correto ao presumir que esse problema é causado pela execução de uma versão mais recente do Mongoose com versões mais antigas do MongoDB - versão 2.X por exemplo?

Não, a versão mongodb não tem nada a ver com isso.

[FIXO]

Eu também tive esse problema


SO: Windows 10
nó: v4.2.3
npm: 2,14,7


eu simplesmente defini o caminho python

npm config set python python2.7

e reinstalar o mangusto

npm install mongoose


e funcionou.

@ nityanarayan44 Funcionou para mim

@mgol
Eu uso OSX 10.10.5, nó 4.4.2, npm 2.15.0, keystone 0.3.17

Eu fui para node_modules/keystone/package.json e removi mongoose das dependências, então

npm config set python python2.7
npm install mongoose

isso funcionou para mim:

Também funcionou para mim a solução @ nityanarayan44

Mesmo problema. Minha versão é o nó 2.15, plataforma Centos

Não existe uma versão do Node 2.15, então acho que você quer dizer io.js. E
io.js não é compatível com o upstream há muito tempo, atualize para o Nó 4
ou 6 ASAP.

Michał Gołębiowski

@arefm Thx, funcionou para mim atualizar a versão 3.8.23. Além do mais, resolvendo outro problema: o comprimento é indefinido e assim por diante.

@mgol Ele estava falando sobre npm . A versão mais recente do npm2 é 2.15.4.

@mnpenner , acredito que seja 3.8.8

@jwerre eu disse npm2. Alguns de nós estão presos ao npm 2 porque 3 tem uma série de problemas diferentes.

@mgol Desculpe, a versão npm é 2.15, não o nó.

@mnpenner Sim, você é um homem inteligente!

Ao usar o Keystone, isto funcionou para que eu superasse aquele erro:

adicione o seguinte aos meus package.json deps:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

então

npm install

finalmente

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Agora eu não entendo o erro.

@aventurella Eu bati na mesma pedra quando estou tentando a Keystone hoje, obrigado por sua solução.

mas agora temos alguns erros estranhos e alguns erros ausentes, isso está certo?

@ tomwang1013 atualizar o mangusto resolveu o problema, mas de alguma forma meu aplicativo não está se conectando ao banco de dados .....

Em nosso caso, o motivo pelo 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 construção do BSON precisa alcançar para buscar arquivos. Quando olhamos em 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.

Desculpe por ter despertado novamente os comentários sobre isso, mas eu gostaria de postar isso para qualquer pessoa que acesse isso no futuro, já que este tópico foi muito útil para resolver nosso problema.

@aventurella obrigado pela sua correção, funcionou! Mas me faz sentir um pouco estranho.

Tenho esse problema no Windows 10, também não consigo rodar um exemplo "básico" ... supõe-se que os arquivos de instalação devem fornecer tudo para rodar algo, ou pelo menos ter as instruções para fazê-lo ...
Isso é chato pra caralho !!!!! : @

@ GST5555 se desejar obter ajuda em tempo real, sinta-se à vontade para se juntar a nós em uma destas comunidades:
Gitter.im
Folga

Esta página foi útil?
0 / 5 - 0 avaliações