أرى هذا الانهيار الآن ولست على دراية بدرجة كافية مع البنية التحتية للألياف العقدة لمعرفة من أين أبدأ في تفسير الخطأ أو صياغة الرمز ...
Meteor server running on: http://localhost:3000/
W202407-10:06:05.740(-8)? (STDERR) /Users/dauser/.meteor/tools/0b2f28e18b/lib/node_modules/fibers/future.js:173
W202407-10:06:07.363(-8)? (STDERR) throw(ex);
W202407-10:06:07.363(-8)? (STDERR) ^
W202407-10:06:07.363(-8)? (STDERR) RangeError: Maximum call stack size exceeded
=> Exited with code: 8
=> Meteor server restarted
كما أفهمها ، هناك شيء ما يتكرر قليلاً بحماس ، ينفجر مكدس الخادم ، ويتعطل. لسوء الحظ ، ليس لدي أي فكرة حقيقية أين هذه الوظيفة المخالفة-نظرت إلى مكالمة My Deps.Autorun (واحدة فقط في الوقت الحالي) ولا يبدو أنها المشكلة. لا يتم تنفيذ أي من الكود الخاص بي مع عودة صريحة ، وليس لدي أي سبب للشك في أن الأشياء الكبيرة يتم نقلها. من الواضح ، لست متأكدًا حقًا ، بالطبع.
أنا حقًا أبحث فقط عن نصيحة حول كيفية توصيل الكود لأريني أين تخرج الأمور عن السيطرة. نظرًا لأن Meteor يقوم بعمل كبير وراء الكواليس ، سيكون من المفيد حقًا أن يعطيني أي شخص بعض المؤشرات حول مكان النظر.
فقط أعود إلى هذا ، وما زلت ضائعًا جدًا فيما يتعلق بالمكان. هذه من شأن التحديث المقترح إلى Node 0.11.x أن يعطيني مزيدًا من المعلومات ، لكن لا يبدو أن القيام بذلك قد أضاف المزيد من التفاصيل عند تعطلها.
يحدث التعطل بعد أي تفاعل في الصفحة-أي ، يبدأ الخادم ويعمل على ما يرام ، ولكن إذا قمت بإعادة تحميل في المتصفح أو التفاعل مع الصفحة نفسها ، Boom!
بالطلب الشائع ، إليك رمز الخادم:
isAuthorized = () ->
console.log "checking authorization"
this.userId == Assets.getText('authorizedUsers')
Meteor.methods(
isAuthorized : isAuthorized
filePickerKey : () ->
# TODO: properly abstract this, rather than copy/paste...
if this.userId == Assets.getText('authorizedUsers')
Assets.getText('fpKey')
else
Meteor.Error 403, 'Error 403: Forbidden')
خط عدم التخلص من 172 من Future.js لم يقدم المزيد من التفاصيل:
I2041-15:52:07.363(-8)? Resolve cb threw Maximum call stack size exceeded
وهنا هي المشكلة التي أواجهها أثناء محاولة استخدام رئيس مجلس الإدارة. لقد كنت ألعب مع هذا لمدة نصف ساعة الماضية ، لذلك من المحتمل أن أرتكب بعض الأخطاء الأساسية ، لكن: قمت بتثبيت رئيس العقدة عبر NPM (NPM Install -G Node-Inspector).
ثم أحاول
$ node-inspector &
[1] 3408
$ Node Inspector v0.6.2
info - socket.io started
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
$ meteor &
[2] 3413
$ [[[[[ ~/Projects/indefinite-ways ]]]]]
=> Meteor server running on: http://localhost:3000/
$ kill -s USR1 3413
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858
حتى الان جيدة جدا. في هذه المرحلة ، لا يكون جانب العميل مفتوحًا في متصفحي (أي عدم وجود علامة تبويب يشير إلى LocalHost: 3000). أفتح علامة تبويب كروم تشير إلى LocalHost: 5858 ، وشاهد مصدر Meteor.js قمت بتعيين نقطة توقف على السطر 6 من Meteor.js
var Fiber = require('fibers');
ثم افتح علامة تبويب عميل Meteor (LocalHost: 3000) وملفقة في التدفق المذكور أعلاه مرة أخرى. لا يتوقف مصحح الأخطاء على السطر 6 ، أو بأي طريقة أخرى تشير إلى أنه لاحظ. نفس الشيء صحيح إذا قمت بتعيين نقطة توقف في السطر 3.