ไม่สามารถค้นหาโมดูล '../build/Release/bson']: 'MODULE_NOT_FOUND'} js-bson: ไม่สามารถโหลดส่วนขยาย c ++ bson โดยใช้รุ่น JS บริสุทธิ์


156

ฉันได้รับข้อผิดพลาดด้านล่าง:

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

นี่คือรายละเอียดเวอร์ชันของฉัน:

  • ระบบปฏิบัติการ: Windows 7

  • MongoDB: 2.6.5

  • โหนด: 0.12.0

ฉันลองสิ่งเหล่านี้ก่อนโพสต์ปัญหาที่นี่

  1. ฉันไปที่\node-modules\mongoose\node-modules\mongodb\node-modules\bsonโฟลเดอร์และทำการเปลี่ยนแปลงด้านล่างในไฟล์ binding-gyp จาก'include_dirs': [ '<!(node -e "require(\'nan\')")' ] เป็น 'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]

  2. เรียกใช้คำสั่งนี้ npm install -g node-gyp

  3. ฉันได้อัปเดตรุ่นพังพอนเป็น 3.8.21 ภายในแล้ว package.json

ไม่มีอะไรทำงาน กรุณาแนะนำ


2
ฉันลองตัวเลือกด้านล่างที่คุณแนะนำแล้วแต่ไม่มีประโยชน์ ฉันได้รับข้อผิดพลาดด้านล่าง {[ข้อผิดพลาด: ไม่สามารถหาโมดูล '../build/Release/bson']: 'MODULE_NOT_FOUND'} js-bson: ไม่สามารถโหลดส่วนขยาย c ++ bson โดยใช้ JS รุ่นบริสุทธิ์ c: \ raj \ project \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170 โยนข้อผิดพลาดใหม่ (msg); ข้อผิดพลาด ^: Route.get () ต้องการฟังก์ชั่นการโทรกลับ แต่มี [object Undefined] ที่ Route <anonymous>
navra


1
โปรดดูวิธีนี้หวังว่าจะได้ผล! ในฐานะที่เป็นส่วนเสริม C ++ BSON เป็นสิ่งจำเป็นสำหรับโมดูลอื่น ๆ อีกมากมายเช่นกัน โปรดทราบว่าวิธีนี้เป็นวิธีเฉพาะสำหรับ Microsoft-OS Win-7 stackoverflow.com/a/29714359/4154706
aitchkhan

ตรวจสอบคำตอบในคำถามนี้ด้วยเช่นกัน: ไม่สามารถโหลด c ++ bson extension ได้
totymedli

ข้อมูลซ้ำที่เป็นไปได้ของFailed to c ++ bson extension
mido

คำตอบ:


165

ค้นหาในโมดูลโมง mpm:

.. \ node_modules \ MongoDB \ node_modules \ bson \ ต่อ \ index.js

เปลี่ยนพา ธ เป็นเวอร์ชัน js ใน catch block:

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

ถึง:

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

หรือคัดลอกไฟล์ใน:

.. \ node_modules \ bson \ สร้าง \ Release \ bson

จาก:

.. \ node_modules \ bson \ browser_build \ bson


1
! น่ากลัว แม้ว่าสภาพแวดล้อมในท้องถิ่นไม่มีอะไรน่าเศร้าที่จะเกิดขึ้น
Manatax

4
bson = ต้องการ ('../../../ browser_build / bson.js');
robor78

25
นี่ไม่ใช่วิธีแก้ปัญหา ด้วยผลลัพธ์เดียวกันคุณสามารถลบสตริงที่พิมพ์ข้อผิดพลาด ข้อผิดพลาดนี้ปรากฏขึ้นเนื่องจากปลั๊กอินพื้นเมือง c ++ สำหรับไม่พบ bson และในกรณีนี้จะใช้ js realization
Alendorff

4
@ Alendorff จริง แต่นั่นคือสิ่งที่พวกเราส่วนใหญ่มองหา ฉันไม่สนใจเกี่ยวกับปลั๊กอิน C ++ ฉันต้องการกำจัดคำเตือนเพราะมันจะทำให้ Node Inspector แตก จากมุมมองนี้ข้อเสนอแนะของคุณ (การลบข้อผิดพลาดการพิมพ์) ก็เป็นวิธีแก้ปัญหาด้วยเช่นกันเพราะนี่ไม่ควรเป็นข้อผิดพลาดรหัสทำงานได้ดีกับ JS fallback
totymedli

3
ขออภัยการ downvoting เป็นคำตอบที่ดีที่สุดอันดับที่สองที่นี่มีทางออกที่ถูกต้องและไม่แฮ็ก: ติดตั้งแพคเกจเวอร์ชันไม่แตกหัก!
jrista

70

ฉันมีปัญหานี้ในวันนี้ (19 ก.พ. 2016) และฉันแก้ไขได้โดยติดตั้ง Mongoose เวอร์ชันล่าสุด ลองใส่ใน package.json ของคุณ:

"mongoose": "~4.4"

หวังว่าจะช่วย แก้ไขได้สำหรับฉัน!


1
ทำงานให้ฉัน ฉันคิดว่ามันเป็นปัญหาทั้งหมดกับรุ่นพังพอนเก่าซึ่งฉันได้จากการกวดวิชาเก่า IMO นี่ควรเป็นคำตอบที่ถูกต้อง
Edward Newell

8
คำตอบที่ดีที่สุดคนอื่น ๆ ทั้งหมดเกี่ยวกับการแก้ไขโค้ดภายในโมดูลไม่ใช่วิธีแก้ปัญหา
จักรยาน

2
วิธีแก้ปัญหาตรงไปข้างหน้ามากที่สุดโดยไม่จำเป็นต้องยุ่งกับ node_modules / mongodb ฯลฯ ขอบคุณ!
mikeym

1
หนึ่งในดีที่สุดเพียงถอนการติดตั้งพังพอน (ถอนการติดตั้งพังพอน PM) และติดตั้งอีกครั้ง (ติดตั้งพังพอน
PMP

18

ปัญหาคือเมื่อคุณติดตั้งพังพอนผ่าน npm จะถือว่าคุณติดตั้งงูหลามบนหน้าต่างของคุณและพยายามสร้างห้องสมุดที่ต้องการ เนื่องจากคุณไม่มีไพ ธ อนมันจะข้ามขั้นตอนการสร้างด้วยคำเตือน แต่เมื่อคุณเริ่มต้นแอปพลิเคชันของคุณโมดูลที่จำเป็นจะไม่อยู่ที่นั่นเพื่อให้คุณได้รับข้อผิดพลาด

เพื่อที่จะทำสิ่งที่ถูกต้องติดตั้งครั้งแรกหลาม (รุ่น 2.7) บนคอมพิวเตอร์ของคุณจาก: https://www.python.org/downloads/หรือถ้าหากมีการติดตั้ง chockolatey choco install python2เพียงแค่พิมพ์

จากนั้นตรวจสอบให้แน่ใจว่าตัวแปรไพ ธ อนถูกตั้งค่าไว้ คุณสามารถตั้งค่าบนพรอมต์คำสั่งเช่น:

SET python=D:\Python27\python.exe

(แน่นอนคุณควรเปลี่ยนเส้นทางตามตำแหน่งของหลาม) จากนั้นติดตั้ง node-gyp:

npm install -g node-gyp

ตอนนี้คุณสามารถติดตั้งพังพอนหรือโมดูลอื่น ๆ ที่ทำให้เกิดปัญหา:

npm install mongoose

คุณจะเห็นเส้นสีเหลืองบางเส้นแทนที่จะเป็นเส้นสีแดงในเวลานี้ แต่ข้อผิดพลาดจะหายไป


2
เวอร์ชั่นของไพ ธ อนนั้นสำคัญ node-gyp ไม่ทำงานกับเวอร์ชัน> 3.0
MatthieuLemoine

1
นี่ไม่ใช่วิธีการแก้ปัญหาอย่างเต็มรูปแบบ ... ฉันยังคงได้รับข้อผิดพลาดต่อไปนี้: MSBUILD: ข้อผิดพลาด MSB3428: ไม่สามารถโหลดคอมโพเนนต์ Visual C ++ "VCBuild.exe"
orszaczky

@TheRebel มันสมมติว่าเครื่องมือเครือข่าย vs2010 เพิ่ม--msvs-version=2012หรือ2013eขึ้นอยู่กับสิ่งที่คุณติดตั้ง เช่นnpm install mongoose --msvs-version=2012
RichieRich

จะทำอย่างไรถ้าฉันปรับใช้แอปโหนดบน heroku cloud
jsbisht

15

ฉันแก้ไขปัญหานี้ด้วยการติดตั้งรุ่น mogoose 3.8.23

npm install mongoose@3.8.23

ทำงานที่นี่ นี่เป็นรุ่นที่เก่ากว่าหรือไม่ มันทำงานทำไม
Victor Ferreira

15

สิ่งนี้ใช้ได้สำหรับฉัน ค้นหาในพื้นที่ทำงานของคุณสำหรับข้อความ:

"../build/Release/bson"

คุณอาจจะพบมันในโมดูล mongose ​​และ monk

จากนั้นแทนที่แต่ละรายการ:

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

ด้วย:

bson = require('bson');

นั่นคือทั้งหมด!


ฉันได้รับข้อผิดพลาดนี้พยายามเรียกใช้การทดสอบเริ่มต้นหลังจากตั้งค่าโครงการโดยใช้ meanjs มันคงที่ ขอบคุณ
RaneWrites

7

ลองnpm install mongoose@3.8.23และเปลี่ยน bson = require('../build/Release/bson');เป็น

bson = require('../browser_build/bson'); ใน node_modules / bson / ext / index.js


ตรวจสอบให้แน่ใจว่าเส้นทางไปยัง bson.js ถูกต้อง สำหรับฉัน bson = ต้องการ ('../ browser_build / bson.js'); ทำงาน ตรวจสอบรุ่นพังพอนก่อนที่จะทำการติดตั้ง
Vikram Shetty

7

สิ่งนี้ใช้ได้กับฉัน:

ไปที่ไฟล์ (ในโครงการของคุณ):

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

และเปลี่ยน:

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

ถึง:

bson = require('bson');

การอ้างอิง: https://github.com/mongodb/js-bson/issues/118


2
คุณได้รับการแก้ไขนี้ยังคงอยู่ได้อย่างไร? คุณตรวจสอบnode_modulesไดเรกทอรีของคุณลงในการควบคุมแหล่งที่มาหรือไม่?
Mark Stosberg

7

คำตอบสั้น ๆ

ติดตั้ง mongodb รุ่นล่าสุด

คำตอบอีกต่อไปเล็กน้อย

ตรวจสอบให้แน่ใจว่า package.json ของคุณใช้ mongodb เวอร์ชันล่าสุดจากนั้นลบ node_modules / mongodb และทำการติดตั้ง npm อีกครั้ง หากคุณไม่ได้ใช้ mongodb เป็นการพึ่งพาโดยตรงให้ลองค้นหาแพ็คเกจที่ใช้ mongdb ฉันใช้:

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

ดังนั้นฉันจึงอัพเดท. /sail-mongo/package.json เป็น:

"mongodb": "2.1.7",

จากนั้นลบ node_modules / mongodb และทำการติดตั้ง npm อีกครั้ง ดูเหมือนว่าดีตอนนี้

ตอบอีกต่อไป

ฉันไม่ชอบวิธีการใช้งานที่แนะนำในปัจจุบัน

require('../browser_build/bson')

เนื่องจากดูที่ ../browser_build/bson.js ไฟล์ 4k + บรรทัดซึ่งดูเหมือนว่าจะมีการใช้งาน "ที่ไม่ใช่เจ้าของภาษา" ดังนั้นแม้ว่าจะไม่คายคำบ่นใด ๆ แต่ก็ยัง "ใช้รุ่น JS บริสุทธิ์" ซึ่งหมายถึงประสิทธิภาพที่ช้าลง

ดูที่https://github.com/mongodb/js-bson/issues/145และ https://github.com/mongodb/js-bson/issues/165ดูเหมือนว่าปัญหาเกิดจาก:

antoniofruci แสดงความคิดเห็นเมื่อ 15 ก.ย. 2558

ฉันเพิ่งพบว่ารหัส c ++ ถูกย้ายออกไปเมื่อ 6 เดือนที่ผ่านมาและตอนนี้มันก็เป็นทางเลือกเพิ่มเติม: bson-ext แน่นอนถ้าคุณติดตั้งเวอร์ชันล่าสุดจะไม่มีข้อผิดพลาดเกิดขึ้น

ดังนั้นฉันจึงพยายามลบ node_modules ทั้งหมดและยังคงมีข้อผิดพลาดเดียวกัน และดูที่ package.json ของ node_modules / mongodb เวอร์ชันของมันยังคงเป็น 1.4.26 ไม่ใช่รุ่นล่าสุด 2.1.7

เห็นได้ชัดว่า mongodb ของฉันมาเป็นพึ่งพาของแพคเกจอื่นที่ฉันติดตั้ง: sails-mongo การแก้ไข package.json ของ sails-mongo และทำซ้ำการติดตั้ง npm ในที่สุดก็แก้ปัญหาได้


6

การปรับใช้Keystone JS CMSฉันมีข้อผิดพลาดเหมือนกันและฉันคิดว่าโซลูชันที่สวยงามที่สุดคือ:

ติดตั้งnpm-check-updates:

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

ภายในไดเร็กทอรีไซต์ keystone ของคุณซึ่งpackage.jsonวางอยู่ให้ตรวจสอบการพึ่งพา:

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

จากนั้นอัปเดตแพ็คเกจทั้งหมด:

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

และสุดท้ายถ้าคุณเลือกjadeแม่แบบบางทีคุณอาจต้องติดตั้งjadeโมดูลอย่างชัดเจน:

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

5

คำตอบที่ทำเครื่องหมายไว้นั้นผิดทั้งหมด สิ่งที่จะซ่อนคำสั่งบันทึกคอนโซลและไม่ทำอะไรเลยที่อยู่ปัญหาจริง คุณยังสามารถหลับตาและมันจะบรรลุผลลัพธ์เดียวกัน

ปัญหาเกิดจาก node-gyp เท่านั้น วัตถุประสงค์คือเพื่อรวบรวมส่วนขยายเนทิฟสำหรับโมดูลที่ต้องการเช่น bson

หากล้มเหลวในการทำเช่นนั้นรหัสจะย้อนกลับไปเป็นรุ่น JS และกรุณาแจ้งให้คุณทราบผ่านทางข้อมูลที่เป็นข้อมูล:

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

ฉันคิดว่าคำถามเป็นจริงเกี่ยวกับวิธีการรวบรวมส่วนขยาย C + + พื้นเมือง แต่ที่ไม่เห็นข้อความดังนั้นให้อยู่ที่

เพื่อให้ node-gyp ทำงาน node-gyp ของคุณต้องทันสมัยกับโหนดและคอมไพเลอร์ C ++ ของคุณ (ซึ่งจะแตกต่างกันไปตามระบบปฏิบัติการของคุณ) ที่สำคัญโมดูลของคุณจะต้องทันสมัย

ก่อนถอนการติดตั้งและติดตั้ง node-gyp ใหม่

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

ตอนนี้คุณจะต้องถอนการติดตั้งและติดตั้งโมดูลโหนดใด ๆ ในแอปของคุณ (ซึ่งรวมถึงโมดูลที่ติดตั้งตามความต้องการด้วย) ที่มี bson ที่ควรดูแลข้อผิดพลาด คุณสามารถค้นหา 'Release / bson' และค้นหาตัวการ

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

จากนั้นถอนการติดตั้งและติดตั้งโมดูลเหล่านี้ใหม่

ง่ายกว่าคือทำซ้ำทั้งnode_modulesโฟลเดอร์:

 rm -rf node_modules
 npm cache clear
 npm i

หากคุณยังคงประสบปัญหาอยู่ 1) โมดูลของคุณล้าสมัย - ตรวจสอบปัญหาการติดตามใน repo หรือ 2) คุณมีข้อขัดแย้งที่อาจเกิดขึ้น - บางครั้งเราอาจมีโหนดโหนดท้องถิ่นเช่น คุณสามารถรันได้node-gypด้วยตัวเองและตรวจสอบเวอร์ชัน


5

ขณะสร้างการตั้งค่าสำหรับwww.spotdekho.comในwindows10เครื่องใหม่ฉันไม่สามารถเรียกใช้คำสั่ง"nodemon web.js" เนื่องจากข้อผิดพลาดเดียวกันได้

"ข้อผิดพลาด: ไม่พบโมดูล '../build/Release/bson'"

รับการแก้ไขตามขั้นตอนด้านล่าง:

  1. สร้างโฟลเดอร์ "Release" ภายใน "node_modules \ bson \ build \" ตำแหน่ง
  2. คัดลอก bson.js จาก "node_modules \ bson \ browser_build \"
  3. วาง bson.js ในโฟลเดอร์ "node_modules \ bson \ build \ Release"

สิ่งนี้จะแก้ไขปัญหา

PS: ฉันใช้พังพอนรุ่น 4.8.8

ขอบคุณ :) หวังว่าจะช่วยใครซักคน


4

ในกรณีของฉันบิตที่มาพร้อมกับพังพอน ( npm install mongoose) มีmongodbแพ็คเกจที่ใช้งานได้node_modulesโฟลเดอร์

ขั้นตอนต่อไปนี้ช่วยฉันในการแก้ไขปัญหา:

  • npm install mongoose
  • คัดลอกnode_modules\mongoose\node_modules\mongodbไปยังnode_modulesโฟลเดอร์รากของฉัน(เขียนทับรุ่นที่มาพร้อมกับnpm install mongodb)
  • ละเว้นFailed to load c++ bson extension...ข้อผิดพลาด (หรือเปลี่ยนรหัสให้เงียบในปัญหา)

3

เมื่อฉันได้รับข้อผิดพลาดเช่นนี้ฉันอัพเกรดจากโหนด v0.10 เป็นโหนด v4.xx สิ่งที่ฉันต้องทำคือติดตั้ง gcc เวอร์ชันใหม่ (ฉันคิดว่าฉันมี gcc v4.4.x หรืออะไรซักอย่าง) ฉันอัปเดตเป็น gcc 4.7.2 และทุกอย่างทำงานได้หลังจากนั้น


3

ฉันยังมีปัญหาเดียวกันกับ bson

ลองรุ่นพังพอนที่ใหม่กว่า

npm install mongoose@4.4

แก้ไขปัญหา

มัสซิโม


3

เรียกใช้คำสั่งนี้เพื่อถอนการติดตั้งพังพอนnpm uninstall --save mongoose- หลังจากนั้นให้ติดตั้งใหม่ แต่คราวนี้npmจะติดตั้งการเรียกใช้พังพอนรุ่นล่าสุดโดยอัตโนมัติnpm install --save mongooseสิ่งนี้ได้ผลสำหรับฉัน


2

น่าเสียดายที่คำตอบทั้งหมดข้างต้นมีเพียงครึ่งเดียวเท่านั้น .. ใช้เวลานานกว่าจะคิดออก ..

Mongoose bson ติดตั้งผ่านทาง npm จะส่งสัญญาณเตือนและทำให้เกิดข้อผิดพลาด ...

npm install -g node-gyp

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

มันใช้งานได้เหมือนเวทมนตร์ !!


2

หากคุณใช้ windows 8.1 คุณอาจต้องการตรวจสอบให้แน่ใจว่าคุณกำลังติดตั้งโมดูล npm ด้วยคอมไพเลอร์ visual studio ที่ถูกต้อง

ฉันติดตั้ง Visual Studio 2012 แล้วคำสั่งนี้ใช้งานได้สำหรับฉัน (หลังจากลบ node_modules dir)

การติดตั้ง npm --msvs_version = 2012

ด้วยเหตุผลบางอย่าง node-gyp พยายามใช้คอมไพเลอร์ Visual Studio รุ่นที่ไม่ถูกต้อง ฉันยังสังเกตเห็นว่าคำสั่ง "npm install" กำลังพิมพ์คำเตือนเกี่ยวกับการไม่ขึ้นต่อกันของโหนด - gyp เมื่อติดตั้งโมดูล mongodb และ mongoose

หลังจากใช้ msvs_version ที่ถูกต้องคำเตือนการติดตั้ง NPM ก็หายไปเช่นเดียวกับคำเตือนคอนโซลเมื่อเรียกใช้แอป nodejs ของฉัน

คุณอาจต้องการตรวจสอบให้แน่ใจว่าคุณติดตั้ง Python 2.7.X เวอร์ชั่นที่ถูกต้องและไม่ใช่ Python 3.0.X

คุณจะต้องตรวจสอบให้แน่ใจว่าหลามนั้นอยู่ในเส้นทางของคุณ


สิ่งนี้ใช้ได้กับฉันใน Windows 8.1 ด้วย Visual Studio Community Edition 2013 โดยใช้npm install --msvs_version=2012
phocks

2

สิ่งเดียวที่ช่วยฉันใน Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121

ติดตั้งโหนดและหลามอีกครั้งด้วยเวอร์ชัน x32
ฉันใช้เวลาหลายครั้งกับข้อผิดพลาดนี้ (ไม่สามารถโหลดส่วนขยาย c ++ bson) และในที่สุดเมื่อฉันติดตั้งโมดูลnode-gyp(สำหรับการสร้าง addons ดั้งเดิม) และแม้กระทั่งการติดตั้ง SDK windows ด้วยสตูดิโอภาพ - nodejs ไม่รู้จักโมดูลประกอบ bson.node หลังจากติดตั้งใหม่ปัญหาจะหายไป

อีกครั้งข้อผิดพลาดนี้หมายถึงอะไร?

จริงๆแล้วมันไม่ใช่ข้อผิดพลาด คุณยังสามารถใช้พังพอน แต่ในกรณีนี้แทนที่จะใช้การรับรู้แบบเร็วของโมดูล bson คุณจะได้รับ js-realization ซึ่งช้ากว่า ฉันเห็นเคล็ดลับมากมายเช่น: "แก้ไขเส้นทางลึก ๆ ข้างใน node_modules ... " - ซึ่งไม่มีประโยชน์อย่างเต็มที่เพราะมันไม่ได้แก้ปัญหา แต่เพิ่งปิดข้อความข้อผิดพลาด



1

คุณไม่ควรเปลี่ยนไฟล์ในโฟลเดอร์ไลบรารี NODE_MODULES

ไฟล์เหล่านั้นเป็นผลมาจาก npm installคำสั่ง

โดยทั่วไปฉันคิดว่าสำหรับผู้ใช้ Windows - วิธีที่ถูกต้องคือใช้ VM มันเป็นสิ่งที่ฉันทำเมื่อฉันทำงานจากที่บ้าน

ทั้งหมดที่คุณต้องการ:

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

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

จากนั้นnpm installหรือถ้าคุณได้ทำมันไปแล้ว -npm update


เขาบอกว่าถูกต้องในคำถามที่เขาใช้ Windows 7 คำสั่ง CentOS และ Debian จะช่วยได้อย่างไร
Thronk

1
โอ้จริงฉันไม่ดี ฉันไม่เห็นแท็กนั้น
Victor Perov

1

ทางออกที่ดีที่สุดสำหรับฉันคือการอัพเกรดจาก node-mongodb 1.x เป็น 2.x


1

ฉันรู้ว่าเธรดนี้มีอายุ 1 ปีขึ้นไป แต่มันก็ช่วยฉันได้แม้ว่าจะมีโมดูลอื่น

ฉันติดตั้ง mongoose-post-findv0.0.2 และปัญหานี้เริ่มต้นขึ้น เพื่อแก้ไขฉันใช้คำแนะนำและไปที่ \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext และเปิดไฟล์ index.js

ไฟล์เริ่มต้นด้วยบล็อก catch try ที่พยายามใช้เวอร์ชัน 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('../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');
    }
}

นี่เป็นรุ่นที่แก้ไขแล้ว สิ่งที่เกิดขึ้นคือมันพยายามโหลด bson จาก ../build/Release/bson ไม่พบมันและตกอยู่ในการจับ มีความพยายามโหลด bson อีกครั้งจาก ../build/Release/bson และล้มเหลว ดังนั้นฉันจึงเปลี่ยนเส้นทางในการจับเพื่อดู ../browser_build/bson วิธีนี้แก้ไขข้อผิดพลาด

ฉันโพสต์นี้เพื่อความสมบูรณ์


1

ฉันมีปัญหาเดียวกันหลังจากอัปเกรดอูบุนตูเป็น 16.04 ฉันแก้ไขด้วยวิธีนี้หวังว่าจะช่วยได้

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

1

ในกรณีของเราเหตุผลที่ไม่พบ c ++ เวอร์ชัน bson นั้นเป็นเพราะเราอยู่หลังพร็อกซีขององค์กรและมีบางสิ่งในกระบวนการสร้าง BSON ที่ต้องเข้าถึงไฟล์ต่างๆ เมื่อเราดูใน node_modules / bson / builderror.log เราเห็นข้อผิดพลาดดังนี้:

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)

ซึ่งแนะนำว่าพร็อกซีอาจเป็นปัญหา การตั้งค่าตัวแปรสภาพแวดล้อม http_proxy และ https_proxy แก้ไขได้

ขออภัยที่เปิดใช้งานความคิดเห็นซ้ำอีกครั้ง แต่ฉันต้องการโพสต์สิ่งนี้กับคนอื่น ๆ ที่พบสิ่งนี้ในอนาคตเนื่องจากหัวข้อนี้มีประโยชน์มากในการแก้ไขปัญหา



0

คัดลอกbson.jsรหัสแรกจากbrowser_build folder

ขั้นที่สองสร้างไฟล์ใหม่bson.jsและวางรหัส

สามindex.jsบันทึกไฟล์ใหม่ใกล้ถึงใน


0

ฉันทำงานกับ OS Windows 8.1 และฉันมีปัญหาเดียวกัน สาเหตุของปัญหาคือรุ่นของ Python ฉันพบปัญหาต้นกำเนิดตรวจสอบไฟล์ ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log

ฉันติดตั้ง Python เวอร์ชันที่ถูกต้อง (2.7.9 สำหรับ 64 บิต) และแก้ไขปัญหาของฉันได้

หมายเหตุ: เวอร์ชันที่ติดตั้งของ python จะต้องเท่ากับหรือมากกว่า 2.7.5 และน้อยกว่า 3.0.0


0

ฉันพยายามแล้วbson = require('../browser_build/bson');แต่จบลงด้วยข้อผิดพลาดอื่น

ไม่สามารถตั้งค่าคุณสมบัติ 'BSON_BINARY_SUBTYPE_DEFAULT' จากไม่ได้กำหนด

ในที่สุดฉันก็แก้ไขปัญหานี้ได้ง่ายๆโดยnpm updateจะแก้ไขโมดูล bson เป็นพังพอน


0

ดังนั้นฉันมีปัญหาเดียวกันและเกิดขึ้นแล้ว URL mongoDB ที่ระบุไม่มีอยู่ ดังนั้นเพื่อแก้ไขปัญหานี้คุณต้องไปที่โฟลเดอร์ ".. \ server \ config \ environment" และแก้ไขไฟล์ "development.js" ลิงก์ไปยัง mongoDB

ตัวอย่าง:

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

  seedDB: true
};

ดังนั้นเปลี่ยน "uri: 'mongodb: // localhost / test2-dev'" เป็นพา ธ ที่แท้จริงไปยังฐานข้อมูล mongoDB ของคุณ

ฉันจะดีใจถ้าโพสต์ของฉันจะช่วยใครสักคน ...


0

ค้นหาในโมดูล nong mongodb .. node_modules \ mongodb \ node_modules \ bson \ ext \ index.js

และเปลี่ยนเส้นทางเป็นเวอร์ชั่น js ใน catch block

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

ถึง 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');
        }
    }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.