'../Build/Release/bson'] kodu bulunamıyor: 'MODULE_NOT_FOUND'} js-bson: Saf JS sürümü kullanılarak c ++ bson uzantısı yüklenemedi


156

Aşağıdaki hatayı alıyorum:

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

İşte sürüm bilgilerim:

  • İşletim Sistemi: Windows 7

  • MongoDB: 2.6.5

  • Düğüm: 0.12.0

Sorunu buraya göndermeden önce bunları denedim.

  1. Gittiğim \node-modules\mongoose\node-modules\mongodb\node-modules\bsonklasörü ve gelen bağlayıcı-gyp dosyasında değişiklik aşağıda yapılan 'include_dirs': [ '<!(node -e "require(\'nan\')")' ] için 'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]

  2. Bu komutu çalıştır npm install -g node-gyp

  3. Firavun faresi versiyonunu içeride 3.8.21 olarak güncelledim package.json

Hiç birşey çalışmıyor. Lütfen önerin


2
Aşağıda önerdiğiniz seçenekleri denedim, ancak boşuna değil. Aşağıdaki hatayı alıyorum {[Hata: '../build/Release/bson'] kodu bulunamadı: 'MODULE_NOT_FOUND'} js-bson: Saf JS sürümü c: \ raj \ project kullanılarak c ++ bson uzantısı yüklenemedi \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170 yeni Hata (msg) atın; ^ Hata: Route.get () geri arama fonksiyonları gerektirir ama Rota bir [nesne Tanımsız] got <anonim>.
navra


1
Lütfen bu çözümü görün, umarım işe yarar! C ++ BSON uzantısı diğer birkaç Modül için de gereklidir. Bu çözüm, Microsoft-OS Win-7 için özeldir, yani Lütfen not stackoverflow.com/a/29714359/4154706
aitchkhan

Bu sorunun cevabını da kontrol edin: c ++ bson uzantısı yüklenemedi
totymedli

Yanıtlar:


165

Npm modül mongodb içinde bul:

.. \ node_modules \ mongodb \ node_modules \ BSON \ ext \ index.js

Yakalama bloğunda js sürümünün yolunu değiştirin:

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

Kime:

bson = require('../browser_build/bson');

Veya dosyayı şu konuma kopyalayın:

.. \ node_modules \ BSON \ inşa \ Release \ BSON

Gönderen:

.. \ node_modules \ BSON \ browser_build \ BSON


1
Müthiş! Yerel çevre olsa da, hiçbir şekilde trajik bir şey olmamalıdır.
15'te Manatax

4
bson = zorunlu ('../../../ browser_build / bson.js');
robor78

25
Bu bir çözüm değil. Aynı sonuçla, sadece hata yazdıran dizeleri kaldırabilirsiniz. Bu hata, bson için yerel c ++ eklentisi bulunamadığı için ortaya çıkar ve bu durumda js gerçekleştirme yine de kullanılır.
Alendorff

4
@Alendorff Doğru, ama çoğumuz böyle görünüyor. C ++ eklentisini umursamıyorum, Düğüm Müfettişini kırdıkları için uyarılardan kurtulmak istiyorum. Bu bakış açısından, öneriniz (hata baskılarını kaldırma) da bir çözümdür, çünkü bu bir hata olmamalıdır, kod JS yedeklemesi ile iyi çalışır.
totymedli

3
Maalesef, burada en iyi ikinci cevap olarak aşağı doğru oylama aslında doğru, hack olmayan bir çözüme sahiptir: Paketin bozuk olmayan bir sürümünü yükleyin!
jrista

70

Bugün bu sorunu yaşadım (19 Şubat 2016) ve sadece Mongoose'un en son sürümünü yükleyerek çözdüm. Bunu paketinize koymayı deneyin. Json:

"mongoose": "~4.4"

Umarım yardımcı olur. Benim için çözdüm!


1
Benim için çalıştı. Bence bu, eski bir öğreticiyi takip etmekten kaynaklanan eski bir mongoose sürümü ile ilgili bir sorun. IMO bu doğru cevap olmalı.
Edward Newell

8
En iyi cevap, modüller içinde kod düzenleme ile ilgili diğer tüm çözümler çözüm değil
bisiklet

2
Node_modules / mongodb vb. İle uğraşmak zorunda kalmadan en ileri çözüm. Teşekkürler!
mikeym

1
En iyilerinden biri, tek renkli mongoose (npm kaldırma mongoose) kaldırın ve tekrar yükleyin (npm mongoose yükleyin)
Grijan

18

Sorun, mongoose'u npm ile yüklediğinizde, pencerelerinizde python yüklü olduğunu ve gerekli kütüphaneleri oluşturmaya çalıştığını varsayar. Python'unuz olmadığından bina aşamasını bir uyarı ile atlar. Ancak uygulamanızı başlattığınızda, gerekli modüller orada olmadığından bu hatayı alırsınız.

İşleri doğru yapmak için önce python'u (sürüm 2.7) bilgisayarınıza şu adresten yükleyin : https://www.python.org/downloads/ veya u chockolatey yüklediyseniz sadece yazın choco install python2.

Ardından python değişkeninizin ayarlandığından emin olun. Komut isteminde aşağıdaki gibi ayarlayabilirsiniz:

SET python=D:\Python27\python.exe

(Tabii ki yolu python konumunuza göre değiştirmeniz gerekir) Sonra node-gyp kurun:

npm install -g node-gyp

Şimdi mongoose'u veya soruna neden olan herhangi bir modülü yeniden yükleyebilirsiniz:

npm install mongoose

Bu sefer kırmızı yerine sarı çizgiler göreceksiniz ancak hata ortadan kalkacak.


2
Python'un sürümü önemlidir. node-gyp> 3.0
MatthieuLemoine

1
Bu tam bir çözüm değil ... Hala aşağıdaki hatayı alıyorum: MSBUILD: hata MSB3428: "VCBuild.exe" Visual C ++ bileşeni yüklenemedi.
orszaczky

@TheRebel vs2010 araç zinciri olduğu varsayılıyor. Ne yüklediğinize bağlı olarak --msvs-version=2012veya ekleyin 2013e. ör.npm install mongoose --msvs-version=2012
RichieRich

Heroku bulutunda düğüm uygulaması dağıtıyorsam ne yapmalıyım.
jsbisht

15

Mogoose sürümünü yükleyerek bu sorunu çözdüm 3.8.23

npm install mongoose@3.8.23

burada çalıştı. bu eski bir sürüm mü? neden işe yaradı?
Victor Ferreira

15

Bu benim için çalıştı. Çalışma alanınızda metni arayın:

"../build/Release/bson"

Muhtemelen mongose ​​ve keşiş modüllerinin içinde bulacaksınız.

Sonra her birini değiştirin:

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

ile:

bson = require('bson');

bu kadar!


Meanjs kullanarak bir proje kurduktan sonra varsayılan testleri çalıştırmaya çalışırken bu hatayı alıyordum. Bu sorunu düzeltti. Teşekkürler.
RaneWrites

7

Deneyin npm install mongoose@3.8.23ve ayrıca değiştirilmesi bson = require('../build/Release/bson');için

bson = require('../browser_build/bson'); node_modules / bson / ext / index.js içinde


Bson.js yolunun doğru olduğundan emin olun. Benim için bson = zorunlu ('../ browser_build / bson.js'); çalıştı. Ayrıca yüklemeye başlamadan önce sürüm mongoose'u kontrol edin.
Vikram Shetty

7

Bu benim için çalıştı:

Dosyaya gidin (projenizde):

node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js

ve değişim:

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

için:

bson = require('bson');

Referans: https://github.com/mongodb/js-bson/issues/118


2
Bu düzeltmenin sürmesini nasıl sağladınız? Dizininizi node_moduleskaynak denetimine girdiniz mi?
Mark Stosberg

7

Kısa cevap

Mongodb'un en son sürümünü yükleyin.

Biraz daha uzun cevap

Package.json dosyanızın en son mongodb sürümünü kullandığından emin olun, ardından node_modules / mongodb öğesini kaldırın ve npm kurulumunu tekrar yapın. Mongodb'u doğrudan bağımlılık olarak kullanmadıysanız, hangi paketin mongdb kullandığını bulmaya çalışın. Kullandım:

find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json:    "mongodb": "1.4.26",
...

Bu yüzden ./sails-mongo/package.json adresini şu şekilde güncelledim:

"mongodb": "2.1.7",

Ardından node_modules / mongodb öğesini kaldırın ve npm kurulumunu tekrar yapın. Şimdi iyi görünüyor.

Daha uzun cevap

Mevcut önerilen kullanım şeklini beğenmedim

require('../browser_build/bson')

../Browser_build/bson.js dosyasına baktığımızdan beri, "yerel olmayan" bir uygulama gibi görünen bir 4k + satır dosyası. Bu yüzden herhangi bir şikayeti tükürmese de, hala "saf JS sürümü kullanıyor", bu da daha yavaş performans anlamına geliyor.

Https://github.com/mongodb/js-bson/issues/145 ve https://github.com/mongodb/js-bson/issues/165 adreslerine bakıldığında , sorunun neden olduğu görülüyor:

antoniofruci Yorumlandı 15 Eyl 2015

Ben sadece c ++ kodu 6 ay önce taşınmış olduğunu öğrendim ve şimdi isteğe bağlı bir bağımlılık: bson-ext. Gerçekten de, en son sürümü yüklerseniz hata oluşmaz.

Bu yüzden tüm node_modules'ü kaldırmaya çalıştım ve hala aynı hatayı aldım. Ve node_modules / mongodb paket.json'a bakıldığında, versiyonu hala en son 2.1.7 değil, 1.4.26'dır.

Görünüşe göre benim mongodb yüklediğim başka bir paketin bağımlılığı olarak geliyor: sails-mongo. Sails-mongo paketinin değiştirilmesi ve npm kurulumunun yeniden yapılması nihayet sorunu çözdü.


6

Keystone JS CMS dağıtma Aynı hata vardı ve en şık çözüm bu olduğunu düşünüyorum:

Kurulum npm-check-updates:

root@keystonejs:~# npm install -g npm-check-updates

Çarpıklık site dizininizdeki package.json(yerleştirildiği yer) bağımlılıkları kontrol edin:

debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u

Ardından tüm paketleri güncelleyin:

debian@keystonejs:~/myproject/manalcjim$ npm install

Son olarak jade, şablonlar seçtiyseniz , jademodülün kurulumunu açıkça yapmanız gerekebilir :

debian@keystonejs:~/myproject/manalcjim$ npm install jade --save

5

İşaretli cevap tamamen yanlış. Tek yapmanız gereken konsol günlüğü deyimini gizlemek ve asıl sorunu ele alan hiçbir şey yapmamaktır. Ayrıca gözlerinizi kapatabilirsiniz ve aynı sonucu elde edecektir.

Sorun düğüm-gyp ve sadece bundan kaynaklanmaktadır. Amacı, bson gibi bazı modüller için yerel uzantıları derlemektir.

Bunu yapmak için başarısız olursa o zaman kod JS sürümü son çare olacaktır ve nazik bilgilendirici mesaj yoluyla bunu söylemek:

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

Sorunun gerçekten yerel C ++ uzantısının nasıl derleneceğiyle ilgili olduğunu varsayalım, sadece mesajı görmeyelim, bu yüzden bunu ele alalım.

Düğüm-gyp'in çalışması için, düğüm-gyp'inizin düğümünüz ve C ++ derleyicinizle (işletim sisteminize bağlı olarak değişecektir) güncel olması gerekir. Bunun yanı sıra modülünüzün de güncel olması gerekir.

İlk önce node-gyp'i kaldırıp yeniden yükleyin

npm un node-gyp -g;npm i node-gyp -g

Şimdi, uygulamanızdaki bson'a sahip (gereksinimler tarafından yüklenen modülleri de içeren) herhangi bir düğüm modülünü tamamen kaldırmanız ve yeniden yüklemeniz gerekecek. Bu hataya dikkat etmelidir. 'Release / bson' için arama yapabilir ve suçluları bulabilirsiniz.

find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;

Ardından bu modülleri kaldırın ve yeniden yükleyin.

Daha kolay olan sadece tüm node_modulesklasörü yeniden yapmaktır :

 rm -rf node_modules
 npm cache clear
 npm i

Hâlâ sorun yaşıyorsanız 1) modülünüz güncel değil - sorun izleyiciyi depolarında kontrol edin veya 2) potansiyel bir çakışma yaşarsınız - bazen örneğin yerel bir düğüm gyp'imiz olabilir. Kendi node-gypbaşına çalışabilir ve sürümleri doğrulayabilirsiniz.


5

www.spotdekho.comYeni windows10makinede kurulum oluştururken "nodemon web.js" aynı hata nedeniyle komutu çalıştıramadım

"Hata: '../build/Release/bson' modülü bulunamadı"

Aşağıdaki adımlarla düzeltildi:

  1. "Node_modules \ bson \ build \" konumunda "Release" klasörü oluştur
  2. Bson.js dosyasını "node_modules \ bson \ browser_build \" klasöründen kopyalayın
  3. Bson.js dosyasını "node_modules \ bson \ build \ Release" klasörüne yapıştırın.

Bu sorunu çözecektir.

Not: Firavun faresi 4.8.8 sürümünü kullanıyorum.

Teşekkürler :), umarım birine yardımcı olur.


4

Benim durumumda, mongoose ( npm install mongoose) ile gelen bitler klasöründe mongodbpaketin çalışan bir sürümüne sahiptir node_modules.

Aşağıdaki adımlar sorunu çözme işini kurtardı:

  • npm install mongoose
  • node_modules\mongoose\node_modules\mongodbkök node_modulesklasöre kopyala (birlikte gelen sürümlerin üzerine yazılır npm install mongodb)
  • Failed to load c++ bson extension...hatayı yoksay (veya sorun üzerinde sessiz olacak şekilde kodu değiştir)

3

Böyle hatalar alırken, v0.10 düğümünden v4.xx düğümü'ne yükseltme yapıyordum. Yapmam gereken gcc'nin daha yeni bir sürümünü kurmaktı (sanırım gcc v4.4.x ya da başka bir şey vardı). Ben gcc 4.7.2 güncelledim ve bundan sonra işler çalıştı.


3

Ben de bson ile aynı sorunu vardı.

daha yeni bir firavun sürümünü denemek

npm install mongoose@4.4

sorunu çözdü.

Massimo.


3

Firavun faresini kaldırmak için bu komutu çalıştırın npm uninstall --save mongoose- daha sonra yeniden yükleyin, ancak bu kez npmfiravun faresinin en son sürümünü otomatik olarak yükler npm install --save mongooseBu benim için çalıştı.


2

Ne yazık ki, yukarıdaki tüm cevaplar sadece yarısı doğru .. Bunu anlamak için uzun zaman aldı ..

Mongoose bson npm üzerinden kurulum uyarı verir ve hataya neden olur ...

npm install -g node-gyp

git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild

Bu sihir gibi çalışır !!


2

Windows 8.1 kullanıyorsanız, npm modüllerinizi doğru visual studio derleyicisiyle kurduğunuzdan emin olmak isteyebilirsiniz.

Visual Studio 2012 yükledim, bu komut benim için çalışıyor. (node_modules dizinini sildikten sonra)

npm yükleme - msvs_version = 2012

Nedense, node-gyp Visual Studio derleyicisinin yanlış sürümünü kullanmaya çalışıyor. Ayrıca "npm install" komutunun, mongodb ve mongoose modüllerini kurarken düğüm-gyp bağımlılıkları hakkında bir uyarı yazdırdığını fark ettim.

Doğru msvs_version kullandıktan sonra, nodejs uygulamasını çalıştırırken npm yükleme uyarılarının yanı sıra konsol uyarısı da ortadan kalktı.

Ayrıca, Python 3.0.X sürümünün değil, doğru Python 2.7.X sürümünün yüklü olduğundan emin olmak isteyebilirsiniz.

Ayrıca python'un env yolunuzda olduğundan emin olmanız gerekir.


Bu benim için Windows 8.1 üzerinde Visual Studio Community Edition 2013 kullanarak npm install --msvs_version=2012
çalıştı

2

Windows 7'de (x64) bana yardımcı olan tek şey: https://stackoverflow.com/a/29714359/2670121

Düğümü ve python'u x32 sürümleriyle yeniden yükleyin.
Bu hatayla çok fazla zaman geçirdim (c ++ bson uzantısı yüklenemedi) ve son olarak, modülü kurduğumda node-gyp(yerel eklentiler oluşturmak için) ve hatta görsel stüdyo ile windows SDK'yı yüklediğimde - nodejs birleştirilmiş modül bson.node'yu modül olarak tanımıyordu. Yeniden yükledikten sonra sorun giderildi.

Yine, bu hata ne anlama geliyor?

Aslında, hata bile değil. Firavun faresini hala kullanabilirsiniz. Ancak bu durumda, bson modülünün hızlı yerel olarak gerçekleştirilmesi yerine, daha yavaş olan js-gerçekleştirme elde edersiniz. "Node_modules içindeki derinlik yolunu düzenle" gibi birçok ipucu gördüm.



1

NODE_MODULES kitaplık klasöründeki dosyaları asla değiştirmemelisiniz.

Bu dosyalar npm installkomutun sonucudur .

Temel olarak, bence Windows kullanıcıları için - doğru yol VM kullanmaktır. Evden çalışırken bunu yapıyorum.

Tüm istediğin:

for CentOS: yum install gcc gcc-c++ make openssl-devel

for Debian/Ubuntu: apt-get install build-essential

ve sonra npm installya da daha önce yaptıysanız -npm update


Windows 7'yi kullandığı soruda doğru diyor - CentOS ve Debian komutu nasıl yardımcı oluyor?
Thronk

1
Oh, gerçekten, benim hatam. Bu etiketi görmedim
Victor Perov

1

Benim için en iyi çözüm node-mongodb 1.x'den 2.x'e yükseltmekti.


1

Bu iş parçasının 1 yaşında olduğunu fark ettim, ancak farklı bir modülle de olsa bana yardımcı oldu.

Mongoose-post-findv0.0.2'yi yükledim ve bu sorun başladı. Düzeltmek için önerileri kullandım ve \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext dizinine geçtim ve index.js dosyasını açtım.

Dosya doğru bson sürümünü gerektirmeye çalışan bir try catch bloğu ile başlar

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('../browser_build/bson');
    } catch (err) {
        console.dir(err)
        console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

bu düzeltilmiş versiyon. Olan şey, bson'u ../build/Release/bson'dan yüklemeye çalıştığı, bulamadığı ve yakalamaya düştüğü. Bson'u ../build/Release/bson adresinden tekrar yüklemeye çalışıldı ve elbette başarısız oldu. Bu yüzden ../browser_build/bson içine bakmak için yakalamak yol değiştirir. Bu hatayı çözdü.

Bunu bütünlük için gönderiyorum.


1

Ubuntu'nun 16.04 sürümüne yükseltildikten sonra da aynı sorunu yaşadım. Bu şekilde çözdüm, umarım yardımcı olur.

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install

1

Bizim durumumuzda, c ++ sürüm bson'un bulunmamasının nedeni, kurumsal bir proxy'nin arkasında olduğumuz ve BSON oluşturma işlemindeki bir şeyin dosyaları almak için ulaşması gerektiğiydi. Node_modules / bson / builderror.log dosyasına baktığımızda şöyle bir hata gördük:

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)

Hangi proxy proxy olabilir önerdi. Http_proxy ve https_proxy ortam değişkenlerini ayarlamak sorunu çözdü.

Bu konuda yorum yapmak için üzgünüm, ama bu iş parçacığının sorununuzu çözmede çok yararlı olduğu için gelecekte bu isabet alan herkes için bu göndermek istedim.


0

Denenmiş npm install mongoose - msvs_version = 2012, birden fazla Visual kurulu varsa, bu benim için çalıştı


0

'Den ilk kopya bson.jskodubrowser_build folder

İkincisi yeni dosya oluştur bson.jsve kodu yapıştır

üçüncüsü yeni dosyayı yakınına kaydedin index.js.


0

İşletim sistemi Windows 8.1 ile çalışıyorum ve aynı sorunu yaşadım. Sorunun kaynağı Python'un versiyonuydu. Kaynak sorunu inceleme dosyasını buldum ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log.

Python'un (64 bit için 2.7.9) doğru sürümünü kurdum ve sorunumu çözdü.

Not: Kurulu python sürümü 2.7.5'e eşit veya daha büyük ve 3.0.0'dan daha küçük olmalıdır


0

Denedim bson = require('../browser_build/bson');ama başka bir hatayla karşılaşıyorum

Undefined 'BSON_BINARY_SUBTYPE_DEFAULT' özelliği ayarlanamıyor

Sonunda bu sorunu basitçe npm updatedüzelttim, bu bgo modülünü mongoozda düzeltir.


0

Yani, ben aynı sorun var ve o zaman belirtilen mongoDB URL yok olur. Bu nedenle, bunu düzeltmek için ".. \ server \ config \ environment" klasörüne gitmeli ve "development.js" dosyasında mongoDB bağlantısını düzenlemelisiniz.

Misal:

// Development specific configuration
// ==================================
module.exports = {
  // MongoDB connection options
  mongo: {
    uri: 'mongodb://localhost/test2-dev'
  },

  seedDB: true
};

Bu nedenle, bu "uri: 'mongodb: // localhost / test2-dev'" ile mongoDB veritabanınızın gerçek bir yolunu değiştirin.

Yazım birisine yardım ederse sevinirim ...


0

npm modülünde bul mongodb ..node_modules \ mongodb \ node_modules \ bson \ ext \ index.js

ve catch bloğunda js sürümüne giden yolu değiştirin

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

için bson = require('../browser_build/bson');

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('../browser_build/bson');  
        }   
    } catch(err) {
        // Attempt to load the release bson version
        try {
            bson = require('../browser_build/bson');
        } catch (err) {
            console.dir(err)
            console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
            bson = require('../lib/bson/bson');
        }
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.