В настоящее время я создаю проект Keystone.js, и мне нужно использовать некоторые Express.js библиотеки промежуточного программного обеспечения. Поскольку Keystone.js построен поверх Express.js, казалось, что это будет довольно просто, но я сталкиваюсь с множеством проблем, пока все работает.
Вот что я сейчас пытаюсь (это мое лучшее предположение относительно правильного способа сделать это):
В моем файле keystone.js
(основная точка входа в приложение) я вставляю следующий код непосредственно перед keystone.start()
:
keystone.app.use(stormpath.init(keystone.app, {
...
}));
Здесь важен бит keystone.app.use(...);
. Я просмотрел исходный код Keystone.js, и оказалось, что базовый объект приложения Express.js представлен как keystone.app
, поэтому я пытаюсь использовать его таким образом.
К сожалению, хотя мой веб-сервер Keystone запускается при запуске $ node keystone.js
, попытка загрузить любую страницу на моем сайте приводит к следующему исключению:
$ node keystone.js
------------------------------------------------
KeystoneJS Started:
keystone is ready on port 3000
------------------------------------------------
TypeError: Object #<Object> has no method 'regenerate'
at doSignin (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/lib/session.js:38:15)
at Promise.<anonymous> (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/lib/session.js:72:5)
at Promise.<anonymous> (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
at Promise.EventEmitter.emit (events.js:95:17)
at Promise.emit (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
at Promise.fulfill (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
at Promise.resolve (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/lib/promise.js:114:23)
at Promise.<anonymous> (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
at Promise.EventEmitter.emit (events.js:95:17)
at Promise.emit (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
at Promise.fulfill (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
at /Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/lib/query.js:1400:13
at model.Document.init (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/lib/document.js:250:11)
at completeOne (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/lib/query.js:1398:10)
at Object.cb (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/lib/query.js:1155:11)
at Object._onImmediate (/Users/rdegges/Dropbox/Code/testing/keystone/node_modules/keystone/node_modules/mongoose/node_modules/mquery/lib/utils.js:137:16)
У меня MongoDB отлично работает локально, и если я прокомментирую свой код выше, все будет работать, как и ожидалось, поэтому я знаю, что это основная причина.
Любая помощь будет оценена по достоинству.
/keystone/*
) или маршруты с вашего собственного сайта? - person JME   schedule 24.02.2015keystone.js
) вы поместилиkeystone.app.use(stormpath.init(...))
? Можете ли вы поделиться своим файломkeystone.js
? - person JME   schedule 25.02.2015keystone.start()
( это казалось подходящим местом). Спасибо за столько времени/помощь! - person rdegges   schedule 25.02.2015(i.e. /keystone/*)
имели собственное промежуточное ПО для аутентификации.. - person Naeem Shaikh   schedule 23.04.2015