我目前正在构建一个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 Web 服务器在运行时启动$ 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 在本地运行得很好,如果我在上面注释掉我的代码,事情会按预期工作,所以我知道这是根本原因。
任何帮助,将不胜感激。