我一直在使用一些自定義Node.js模塊的項目。我創建了一個 '助手' 模塊,與裝載協助一些輔助方法:Catch-22遞歸節點模塊在使用摩卡時炸掉了
/helpers/index.js:
var mutability = require('./mutability'),
cb = require('./cb'),
build = require('./build'),
userAgent = require('./userAgent'),
is = require('./is'),
query = require('./query'),
config = require('./config'),
_ = require('underscore')
module.exports = _.extend({
cb: cb,
build: build,
userAgent: userAgent,
is: is,
query: query,
config: config
}, mutability)
爲了好玩,mutability.js
是:
'use strict'
module.exports = {
setReadOnly: function(obj, key) {
// whatever
return obj
},
setWritable: function(obj, key) {
// whatever
return obj
}
}
我的模塊之一,build
,需要一個類來做一些類型檢查:
/helpers/build.js
'use strict'
var urljoin = require('url-join'),
config = require('./config'),
cb = require('./cb'),
Entity = require('../lib/entity'),
_ = require('underscore')
module.exports = {
url: function(options) {
return urljoin(
config.baseUrl,
options.client.orgId,
options.client.appId,
options.type, (typeof options.uuidOrName === 'string') ? options.uuidOrName : ""
)
},
GET: function(options) {
options.type = options.type || args[0] instanceof Entity ? args[0]._type : args[0]
options.query = options.query || args[0] instanceof Entity ? args[0] : undefined
return options
}
}
而且Entity
則需要helpers
:
/lib/entity.js
'use strict'
var helpers = require('../helpers'),
ok = require('objectkit'),
_ = require('underscore')
var Entity = function(object) {
var self = this
_.extend(self, object)
helpers.setReadOnly(self, ['uuid'])
return self
}
module.exports = Entity
無論出於何種原因,當我和摩卡運行此,我得到helpers
註銷爲{}
和摩卡拋出:
Uncaught TypeError: helpers.setReadOnly is not a function
當我運行/lib/entity.js
直接與node
,它打印適當的模塊。是什麼賦予了?摩卡爲什麼炸燬?
你沒有給我們看的'/ helpers/mutability.js'模塊似乎是最相關的 – Bergi
娜,我不這麼認爲。如果我直接需要'var mutability = require('/ helpers/mutability')'它工作得很好。我實際上傾向於這是一個摩卡錯誤,因爲它不是*只是*缺少可變性,它是整個幫助者對象。 – brandonscript