ไม่สามารถโหลดส่วนขยาย c ++ bson


185

โหนดรวม noob ที่นี่ ฉันพยายามเซ็ตอัพตัวอย่างโหนด แต่ข้อผิดพลาดต่อไปนี้ยังคงปรากฏขึ้นทุกครั้งที่ฉันพยายามเรียกใช้:

แอปโหนด

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

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [#$%67890 :27017]
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
    at EventEmitter.emit (events.js:106:17)
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
    at EventEmitter.emit (events.js:98:17)
    at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:830:16
    at process._tickCallback (node.js:415:13)

3
ข้อผิดพลาดคือfailed to connect toดังนั้นฉันคิดว่าbsonข้อความอาจไม่เกี่ยวข้องและไม่สำคัญจริงๆ คุณแน่ใจหรือว่าการตั้งค่าการเชื่อมต่อ Mongo นั้นถูกต้อง?
— loganfsmyth

1
เรื่องขำขันฉันได้รับข้อผิดพลาดนี้บนเครื่องที่ใช้ Windows เท่านั้น ... havent พยายามติดตั้ง node-gyp แต่ ive ได้ลองเกือบทุกอย่างแล้วยังคงได้รับข้อผิดพลาด และ chocoletey จะไม่ติดตั้งสิ่งจำเป็นในการสร้าง
— Snymax

รหัส JS BSON ไม่เร็วเท่ากับ C ++ ตอนนี้หรือไม่ ถ้าเป็นเช่นนั้นนี่เป็นปัญหาหรือไม่
— UpTheCreek

สำหรับผู้ที่ยังใหม่กับ iojs ที่ประสบปัญหานี้ฉันได้เปิดตั๋วเพื่อติดตามปัญหานี้: github.com/mongodb/js-bson/issues/136
— bitinn

หมายเหตุ: ฉันกำลังใช้ Keystone.js เป็นกรอบงาน mvc ของฉัน สำหรับฉันคุณเปลี่ยน "../build/Release/bson" เป็น "../browser_build/bson" ถ้าคุณขึ้นไปคุณจะเห็นโฟลเดอร์ browser_build
— Pranay Pant

คำตอบ:


201

ฉันเดาว่าคุณไม่ได้มีเครื่องมือทำให้เมื่อคุณติดตั้งไลบรารี mongodb ของคุณ ฉันแนะนำให้คุณทำ

xcode-select --install(สำหรับ mac) หรือsudo apt-get install gcc make build-essential(บน Ubuntu)

และเรียกใช้

rm -rf node_modules
npm cache clean
npm install

หรือเพียงอัปเดต npm ตามความคิดเห็น @tobias (หลังจากติดตั้ง build-essential)

npm update

2
+1 สิ่งที่ฉันต้องทำคือ 3 บรรทัดสุดท้าย - ฉันคิดว่าเหตุผลที่ฉันไม่ได้สร้างขึ้นมาเพราะมันมาเป็นส่วนหนึ่งของmongoskinโมดูล
— Matt Browne

2
ว้าว! ที่sudo apt-get install gcc make build-essentialปลายเป็นหนึ่งในสิ่งที่ดีที่สุด Node.js + Ubuntu เคล็ดลับการพัฒนาที่ฉันเคยเห็น มันเป็นตัวเปลี่ยนเกมที่สมบูรณ์แบบถ้าคุณคุ้นเคยกับการพัฒนาเว็บแอปพลิเคชันและเพิ่งพัฒนาด้วย Node.js บน Ubuntu
— Charney Kaye

3
อะไรคือสาเหตุของการติดตั้งgccและmakeพร้อมกับbuild-essential? หลังขึ้นอยู่กับอีกสองคนดังนั้นพวกเขาจึงจะถูกติดตั้งต่อไป ( packages.ubuntu.com/trusty/build-essential ) การทำsudo apt-get install build-essentialควรจะเพียงพอ
— Sergey

8
วิธีการเกี่ยวกับ windows? ฉันได้รับสิ่งนี้ในพรอมต์คำสั่ง windows ของฉัน C: \ Users \ me> โหนด C: \ Users \ me \ Desktop \ nodeproject \ datagen.js {[ข้อผิดพลาด: ไม่พบโมดูล '../build/Release/bson' รหัส]: 'MODULE_NOT_FOUND'} js-bson: ไม่สามารถโหลดส่วนขยาย c ++ bson โดยใช้รุ่น JS บริสุทธิ์ {[ข้อผิดพลาด: ไม่สามารถหาโมดูล '../build/Release/bson'] รหัส: 'MODULE_NOT_FOUND'} js-bson: ไม่สามารถโหลด c ++ bson extension โดยใช้ pure JS version เชื่อมต่อกับเซิร์ฟเวอร์ได้อย่างถูกต้อง
— ULLAS K

1
สิ่งที่เกี่ยวกับเครื่องหน้าต่าง :(
— Jamie Hutber

100

ฉันเพิ่งแก้ไขมัน

เมื่อคุณติดตั้งโมดูลพังพอนโดย npm โมดูลนี้จะไม่มีโมดูล bson ภายในในโฟลเดอร์ ในไฟล์node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.jsให้เปลี่ยนบรรทัด

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

ถึง

bson = require('bson');

จากนั้นติดตั้งโมดูล bson โดยใช้ npm


36
เป็นความคิดที่ดีหรือไม่ที่จะเปลี่ยนแปลงสิ่งต่างๆภายในไดเรกทอรี node_modules ดูเหมือนจะเปราะบาง
— Douglas Ferguson

6
@ DouglasFerguson ไม่ได้จริงๆ หากคุณแก้ไข node_module ฉันขอแนะนำให้ฟอร์ก repo และติดตั้งโมดูลที่แก้ไขผ่าน npm / bower
— คริสโตเฟอร์มาร์แชลล์

4
คำตอบนี้ใช้ได้ ผู้พัฒนาที่ Mongoose โปรดแก้ไขสิ่งนี้!
— Steve K

23
นี่คือแฮ็คไม่ใช่การแก้ไข
— Ashesh

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

36

ฉันได้เรียงลำดับปัญหาของการ "ล้มเหลวในการโหลดส่วนขยาย c ++ bson" ใน raspbian (debian สำหรับ raspberry) โดย:

npm install -g node-gyp

แล้ว

npm update

3
ฉันแก้ไขปัญหาของฉันเพียงแค่รันnpm updateโดยไม่ต้องติดตั้งอะไรอีกเลย
— MalcolmOcean

27

ฉันไม่สามารถแก้ไขปัญหานี้ได้

จนถึงตอนนี้. ก่อนอื่นคุณต้องมีแพ็คเกจระบบที่ Pradeep Mahdevu พูดถึง นั่นคือ:

xcode-select --install (on a mac) 

หรือ

sudo apt-get install gcc make build-essential (on ubuntu)

จากนั้นฉันติดตั้ง node-gyp

npm install -g node-gyp 

เหมือน datadracer กล่าวว่า แต่การปรับปรุง npm แนะนำโดยเขามีความเสี่ยง อัพเดตโมดูลทั้งหมดซึ่งอาจเป็นอันตรายได้ (บางครั้ง API เปลี่ยนแปลงระหว่างเวอร์ชัน)

ฉันขอแนะนำให้ไปที่ไดเร็กทอรี node_modules / mongodb / node_modules / bsonและจากที่นั่นใช้

node-gyp rebuild

นั่นช่วยแก้ไขปัญหาให้ฉันได้


5
แล้ว windows :(
— Jamie Hutber

@JamieHutber ติดตั้ง VS 2013
— Rahil Wazir

ฉันทำสิ่งนี้ในการวางจำหน่ายDietPiบน 512MB RP1 แค่อยากจะบอกว่าผมมีการติดตั้งหลาม ( apt-get install python) แล้วจากภายในระยะnode_modules/mongoose/node_modules/mongodb/node_modules/bson/ ที่สร้างขึ้นนี้make Release/bson.node
— staticboy

20

ปัญหาที่พบบ่อยคือ node-gyp ต้องการ Python 2.x และถ้าระบบของคุณpythonชี้ไปที่ 3.x มันจะล้มเหลวในการคอมไพล์bsonโดยไม่มีการเตือนล่วงหน้า คุณสามารถแก้ไขได้โดยการตั้งค่าpythonคีย์สากลในการกำหนดค่าnpm ที่ชี้ไปที่ปฏิบัติการ 2.x ในระบบของคุณ ตัวอย่างเช่นบน Arch Linux:

npm config -g set python "/usr/bin/python2"

19

เมื่อวันที่ 8.1

ดูเหมือนว่าฉันใช้พังพอนผิดรุ่นในpackage.jsonไฟล์ของฉัน

ฉันออกเส้นจาก"mongoose" : "^3.8.15"package.json

CLI:

npm install mongoose --save

ตอนนี้มันพูด"mongoose": "^4.0.6"ในpackage.jsonและข้อผิดพลาดที่ฉันได้หายไป


ขอบคุณ! คุณช่วยฉันจากการทุบตีบนแป้นพิมพ์หลายชั่วโมง นี่เป็นทางออกสุดท้ายและเดียวที่ทำงานบน windows ปัญหาคือฉันกำลังเรียกใช้พังพอนรุ่น 3.x ซึ่งดูเหมือนจะไม่เข้ากันกับการติดตั้ง mongodb ล่าสุดบนพีซีของฉัน
— ChallengeAccepted

ในที่สุดก็ทำให้ฉันใช้ Ubuntu ได้เช่นกัน
— Jason Kennaly

ใช่ทำงานบน Mac เช่นกัน ขอบคุณ!
— jos

ขอบคุณมัด! ติดตามเซสชั่นการฝึกอบรม "คุณได้รับเอกสารของ Microsoft! MongoDB Jump Start" แล้วและมีข้อผิดพลาดเดียวกันเกี่ยวข้องกับแพ็คเกจ mongodb เท่านั้น - ทำตามขั้นตอนข้างต้นสำหรับหนึ่งและเพียงพอแล้วตอนนี้ก็กำลังทำงานอยู่! :)
— Fernando Madruga

11

ฉันใช้ Ubuntu 14.04 และแก้ไขให้ฉันฉันต้องสร้าง symlink สำหรับnodeเพื่อชี้ไปที่nodejsตามที่อธิบายไว้ที่นี่:

nodejs vs node บน Ubuntu 12.04

เมื่อฉันทำแล้วฉันก็จะรันคำสั่งเหล่านี้อีกครั้ง:

rm -rf node_modules
npm cache clean
npm install

แอนโธนีที่ยอดเยี่ยม! ฉันยังใช้งาน Ubuntu 14.04 และข้อเสนอแนะของคุณแก้ไขปัญหาให้ฉันได้ ไม่เพียงพอที่จะติดตั้ง build-essential และติดตั้งใหม่ทุกอย่าง: ฉันต้องเพิ่ม 'node' ln ด้วย
— Franco

8

ดังนั้นในกรณีของฉันฉันแรกพยายามตรวจสอบภายใต้ไดเรกทอรีนี้/ node_modules / พังพอน / node_modules /เพียงเพื่อยืนยันว่าฉันมีโมดูลbson ฉันคิดว่าฉันไม่ได้มีมันตั้งแต่แรกแล้วฉันก็วิ่ง

npm ติดตั้ง bson 

แล้ว

ปรับปรุง npm

ทั้งหมดได้รับการจัดเรียงพยายามและทดสอบใน Ubuntu


ทำงานให้ฉันด้วย แต่ฉันก็พิมพ์makeด้วย/devel/node_modules/bson/
— exebook

1
ทำงานให้ฉัน การล้างแคช npm ไม่ได้ ที่จริงแล้วสิ่งที่ฉันทำคือจาก / node_modules / พังพอนวิ่งnpm install bson
— RichieRich

8

แค่อยากจะบอกว่าฉันก็มีข้อผิดพลาด

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

แต่ไม่มีข้อผิดพลาดอื่น ๆ ฉันลองทุกอย่างและกลับกลายเป็นว่าไดรเวอร์ MongoDB ที่ฉันระบุไว้ในไฟล์ package.json ไม่เข้ากันกับ MongoDB รุ่นของฉัน ฉันเปลี่ยนเป็นเวอร์ชั่นล่าสุดซึ่งเป็น (1.4.34) และใช้งานได้ !!!


ติดตั้งแน่นอน npm mongodb @ แก้ไขล่าสุดสำหรับฉันปัญหา
— tam.teixeira


8

ในที่สุดผมก็แก้ไขข้อผิดพลาดนี้โดยการปรับปรุงรุ่นพึ่งพา MongoDB ของฉันไป~ 2.0.36package.jsonใน

 "dependencies": {
    "consolidate": "~0.9.1",
    "express": "3.x",
    "mongodb": "~2.0.36",
    "mongoose": "^4.1.12"
  }

เหมืองแร่ที่เกี่ยวข้องเล็กน้อยผมใช้ mongod และไม่ mobgo ฐานข้อมูล
— แบรด B

5

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

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

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


สิ่งนี้ล้มเหลวโดยมีข้อผิดพลาด:$ node gyp rebuild module.js:341 throw err; ^ Error: Cannot find module '/private/tmp/js-bson/gyp' at Function.Module._resolveFilename (module.js:339:15) at Function.Module._load (module.js:290:25) at Function.Module.runMain (module.js:447:10) at startup (node.js:140:18) at node.js:1001:3
— Thomas Modeneis

4

สำหรับฉันใช้เพื่อเรียกใช้คำสั่งเหล่านี้ในไดเรกทอรี api ของฉัน:

rm -rf node_modules
npm cache clean 
npm install

4

ฉันเพิ่งวิ่ง:

sudo npm install bson

และ

sudo npm update

และทั้งหมดก็โอเค


คุณควรหลีกเลี่ยงการเรียกใช้ npm ด้วยสิทธิ์ sudo
— loganhuskins

สิ่งที่คุณสามารถหลีกเลี่ยงได้ในพื้นที่ sudo คุณควร ฉันไม่คิดว่ามันจะทำให้เกิดปัญหาร้ายแรงใด ๆ มันเป็นเพียงการปฏิบัติที่ดี นี่คือบทความที่อาจช่วยได้ (ไม่สามารถรับรองได้นอกเหนือจากความชอบ John Papa) johnpapa.net/how-to-use-npm-global-without-sudo-on-osx
— loganhuskins

3

ข้อความส่วนขยาย bson เป็นเพียงคำเตือนฉันได้รับมันตลอดเวลาในแอปพลิเคชัน nodejs ของฉัน

สิ่งที่ต้องตรวจสอบ:

  • อินสแตนซ์ MongoDB : คุณมีอินสแตนซ์ MongoDB ทำงานอยู่หรือไม่?
  • Config : คุณได้อย่างถูกต้องกำหนดค่าพังพอนอินสแตนซ์ MongoDB ของคุณหรือไม่ ฉันสงสัยว่าการตั้งค่าของคุณผิดเพราะข้อความผิดพลาดคายสตริงแปลก ๆ สำหรับชื่อโฮสต์เซิร์ฟเวอร์ mongodb ของคุณ ..

นั่นคือข้อมูลที่เป็นประโยชน์ ด้วยวิธีการของฉันฉันคิดว่าฉันกำลังผสมข้อมูลบัญชีผู้ใช้ Mongolab กับข้อมูลผู้ใช้ MongoB จริงสำหรับฐานข้อมูล
— Theja

อืมฉันกำลังพบปัญหาเดียวกัน ทุกอย่างทำงานบนเซิร์ฟเวอร์ทดสอบในพื้นที่ของฉันและฉันใช้ mongoHQ ดังนั้นจึงไม่จำเป็นต้องมีอินสแตนซ์ของ mongo ในพื้นที่สิ่งอื่น ๆ อาจผิดพลาดได้บ้าง
— Karoh

ลืมเกี่ยวกับคำตอบ Pradeep ด้านล่างที่แก้ไขได้ :)
— Karoh

3

ฉันแก้ไขปัญหานี้บน CentOS โดย

  • sudo yum groupinstall "เครื่องมือสำหรับการพัฒนา"
  • sudo npm install -g node-gyp
  • rm -r node_modules
  • แคช NPM สะอาด
  • ติดตั้ง NPM

@Theja กล่าวว่าข้อผิดพลาดเกิดขึ้นกับเครื่อง Windows เท่านั้น
— Pawel Veselov

3

ฉันแก้ไขมันโดยการเปลี่ยนบรรทัดที่ 10 จาก:

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

จาก:

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

ถึง:

bson = require('bson');

3
นั่นคือการสร้างแพ็คเกจเพื่อใช้วิธีการแก้ปัญหา js บริสุทธิ์ฉันเดา
— bolerovt

ฉันไม่แน่ใจ 100% แต่ฉันเข้าใจว่านั่นเป็นการหลีกเลี่ยง
— jorgefpastor

2

ฉันมีปัญหานี้ด้วยและทำให้เซสชันของฉันไม่ทำงาน แต่ไม่ทำลาย ...

ฉันใช้การเชื่อมต่อพังพอน

ฉันมีสิ่งนี้:

var mongoose = require('mongoose');
var express = require('express');
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
var MongoStore = require('connect-mongo')(expressSession);
...
var app = express();
app.set('port', process.env.PORT || 8080);
app.use(bodyParser);
mongoose.connect('mongodb://localhost/TEST');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  console.log('MongoDB connected');
});


app.use(cookieParser());
app.use(expressSession({
  secret: 'mysecret',
  cookie: {
    maxAge: null,
    expires: moment().utc().add('days',10).toDate(),// 10 dagen
  },
  store: new MongoStore({
  db: 'TEST',
  collection: 'sessions',
}),

ตรงไปตรงมามาก แต่ req.session คงว่างอยู่เสมอ

rm -rf node_modules
npm cache clean
npm install

ทำเคล็ดลับ ระวังคุณไม่มี 'mongodb' ใน package.json ของคุณ! เพียงพังพอนและเชื่อมต่อ Mongo


2

นี่คือวิธีที่ฉันแก้ไขปัญหาบน Ubuntu:

  1. ln -s /usr/bin/nodejs /usr/bin/node
  2. npm install node-gyp
  3. cd node_modules/mongodb/node_modules/bson
  4. node-gyp rebuild

แรงบันดาลใจจาก @mbochynski คำตอบ แต่ฉันต้องสร้างลิงค์สัญลักษณ์ก่อนมิฉะนั้นการสร้างใหม่ล้มเหลว


2

ฉันประสบปัญหาเดียวกันลองใช้ตัวเลือกมากมาย แต่สุดท้ายnpm intallในโฟลเดอร์แอพเฉลี่ยของฉันก็ใช้งานได้


2

ฉันมีปัญหานี้เพราะฉันรวมโฟลเดอร์node_modulesในที่เก็บ Git ของฉัน เมื่อฉันสร้างnode_modules อีกครั้งบนระบบอื่นมันทำงานได้ หนึ่งในนั้นกำลังใช้งาน Linux, อีกหนึ่ง OS X บางทีพวกเขาอาจมีสถาปัตยกรรมโปรเซสเซอร์ที่แตกต่างกันเช่นกัน


1

ฉันมีปัญหาเดียวกันกับอินสแตนซ์ EC2 ของฉัน ฉันคิดว่าสาเหตุแรกคือเพราะฉันมีอินสแตนซ์โหนดทำงานเมื่อฉันติดตั้ง Mongo ฉันหยุดบริการโหนดแล้วก็วิ่ง

sudo npm update 

ภายในโฟลเดอร์ระดับบนสุดของโครงการโหนดของฉัน ปัญหานี้ได้รับการแก้ไขและทุกอย่างก็เหมือนใหม่


1

ฉันพยายามเรียกใช้โหนดบนโฟลเดอร์ที่แชร์แบบเสมือนเครื่อง (คนพเนจร) นั่นเป็นปัญหา เครื่องโฮสต์ของฉันคือ Windows โหนดที่ติดตั้งบน Windows และทำงานเหมือนเครื่องราง ดังนั้นหากคุณใช้เครื่องเสมือนให้ลองเรียกใช้โหนดเซิร์ฟเวอร์บนเครื่องโฮสต์


1

ฉันมีปัญหาเดียวกันและไม่มีอะไรทำงานให้ฉันได้ ข้อผิดพลาดที่แสดงkerberosทำให้เกิดปัญหาและเป็นหนึ่งในการmongooseอ้างอิง เนื่องจากฉันใช้ Ubuntu ฉันคิดว่าอาจมีปัญหาสิทธิ์ใช้งานระหว่างแพ็คเกจที่ติดตั้งไว้ทั่วโลก - /usr/lib/node_modulesผ่านsudoและที่อยู่ในพื้นที่ผู้ใช้

ฉันติดตั้งไปmongooseทั่วโลก - sudoแน่นอนและทุกอย่างก็เริ่มทำงานอย่างที่คาดไว้

ป.ล. kerberosแพคเกจตอนนี้ยังติดตั้งทั่วโลกถัดไปmongooseแต่ฉันจำไม่ได้ว่าฉันตั้งใจทำมันหรือไม่ - ในขณะที่ฉันพยายามแก้ไขปัญหาหรือตอนนั้นมาจากจุดเริ่มต้น


1

ฉันกำลังทำงานกับนักเทียบท่ากับ centOS 7 และพบปัญหาเดียวกัน

หลังจากมองไปรอบ ๆ และพยายามหลายครั้งฉันแก้ไขปัญหานี้โดยการติดตั้ง mongodb และ mongodb-server

yum install mongodb mongodb-server

ฉันไม่คิดว่านี่เป็นวิธีที่ดีที่สุดในการผลิตภาชนะบรรจุที่น้อยที่สุด แต่ฉันสามารถ จำกัด ขอบเขตไว้ในแพ็คเกจต่อไปนี้

==============================================================================================================
 Package                          Arch              Version                          Repository          Size

==============================================================================================================
Installing:
 mongodb                          x86_64            2.6.5-2.el7                      epel                57 M
 mongodb-server                   x86_64            2.6.5-2.el7                      epel               8.7 M
Installing for dependencies:
 boost-filesystem                 x86_64            1.53.0-18.el7                    base                66 k
 boost-program-options            x86_64            1.53.0-18.el7                    base               154 k
 boost-system                     x86_64            1.53.0-18.el7                    base                38 k
 boost-thread                     x86_64            1.53.0-18.el7                    base                56 k
 gperftools-libs                  x86_64            2.1-1.el7                        epel               267 k
 libpcap                          x86_64            14:1.5.3-3.el7_0.1               updates            137 k
 libunwind                        x86_64            1.1-3.el7                        epel                61 k
 snappy                           x86_64            1.1.0-3.el7                      base                40 k


1

ฉันสามารถแก้ไขได้โดยการถอนการติดตั้งและติดตั้งแพ็คเกจพระใหม่ การติดตั้งครั้งแรกดูเหมือนจะมีการพึ่งพา mongodb / bson ที่เสียหาย


1

Followint @ user1548357 ฉันตัดสินใจเปลี่ยนไฟล์โมดูลเอง เพื่อหลีกเลี่ยงปัญหาที่ชี้ให้เห็นโดยความคิดเห็นที่ถูกต้องด้านล่างฉันรวมการเปลี่ยนแปลงของฉันไว้ในสคริปต์การติดตั้งเพื่อให้ฉันสามารถตั้งค่าและลืมมันและมั่นใจได้ว่ามันจะทำงานเมื่อติดตั้งโมดูลของฉัน

// package.json
"scripts": {
    // other scripts
    "postinstall": "node ./bson.fix.js"
},

และสคริปต์คือ:

// bson.fix.js
var fs = require('fs');
var file = './node_modules/bson/ext/index.js'
fs.readFile(file, 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  var result = data.replace(/\.\.\/build\/Release\/bson/g, 'bson');
  fs.writeFile(file, result, 'utf8', function (err) {
     if (err) return console.log(err);
     console.log('Fixed bson module so as to use JS version');
  });
});

1

ขจัดปัญหาได้อย่างง่ายดายเพียงเพิ่มบรรทัดนี้ทั้งลองและจับเส้นทางบล็อก: node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js

bson = require('bson');  instead 

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

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


สวัสดีขอบคุณสำหรับคำตอบของคุณ โปรดใช้การจัดรูปแบบในตัวอย่างโค้ดเพื่อให้ผู้คนอ่านง่ายขึ้น
— F_SO_K

1

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

ติดตั้งโหนดและหลามอีกครั้งด้วยเวอร์ชัน x32
ฉันใช้เวลามากกับข้อผิดพลาดนี้:

ไม่สามารถโหลดส่วนขยาย c ++ bson

และในที่สุดเมื่อฉันติดตั้งโมดูลnode-gyp(สำหรับการสร้าง addons ดั้งเดิม) และแม้กระทั่งการติดตั้ง windows SDK กับ visual studio - nodejs ไม่รู้จักโมดูลที่ประกอบbson.nodeเป็นโมดูล หลังจากติดตั้งปัญหาจะหายไป

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

จริงๆแล้วมันไม่ใช่ข้อผิดพลาด คุณยังสามารถใช้พังพอน แต่ในกรณีนี้bsonคุณจะได้รับโมดูลjs-realizationที่ช้ากว่า

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.