Node.js 调用静态函数返回';不是一个函数';
我正在开发一个mean.js堆栈应用程序。当我尝试调用我的一个模型的静态函数时,我得到错误“SomeItem.createNew不是函数” 我从另一个不同模式的静态方法调用这个静态方法,如下所示 不起作用:Node.js 调用静态函数返回';不是一个函数';,node.js,meanjs,Node.js,Meanjs,我正在开发一个mean.js堆栈应用程序。当我尝试调用我的一个模型的静态函数时,我得到错误“SomeItem.createNew不是函数” 我从另一个不同模式的静态方法调用这个静态方法,如下所示 不起作用: var SomeItem = require('./some-item.js'); aSchema.statics.createNew = function(body, cb) { var newA = new this(); //create child items
var SomeItem = require('./some-item.js');
aSchema.statics.createNew = function(body, cb) {
var newA = new this();
//create child items
for (i = 0; i < body.someItems.length; i++ {
SomeItem.createNew(body.someItems[i], function(err, item) {
}
}
var SomeItem=require('./some item.js');
aSchema.statics.createNew=函数(主体,cb){
var newA=newthis();
//创建子项
对于(i=0;i
是否有效:
aSchema.statics.createNew = function(body, cb) {
var newA = new this();
var SomeItem = require('./some-item.js');
//create child items
for (i = 0; i < body.someItems.length; i++ {
SomeItem.createNew(body.someItems[i], function(err, item) {
}
}
aSchema.statics.createNew=函数(主体,cb){
var newA=newthis();
var SomeItem=require('./some item.js');
//创建子项
对于(i=0;i
但是,如果我将require放在静态函数中,它可以正常工作。为什么会这样?我只需要在顶部声明一次“var SomeItem”,而不是在我需要使用它的每个函数中声明一次。将require放在函数中更改行为的唯一原因是,您需要的模块使用了一些资源在启动所需模块时不可用,但在首次使用该功能时可用的 这不应该发生,但这可能就是这里正在发生的情况-竞争条件。如果没有看到相关代码,就不可能告诉您更多信息,但您肯定需要仔细查看所需模块,以查找竞争条件和时间敏感状态
更多的错误日志记录有助于缩小问题的范围。出于某种原因,我更改了app.js文件中require模块的顺序,以便先调用aSchema的文件,然后问题就消失了。我的app.js文件称为my api文件,它称为aSchema的文件,它称为someItem的文件。您对为什么会发生这种情况有更深入的了解吗解决了我的问题?