Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 调用静态函数返回';不是一个函数';_Node.js_Meanjs - Fatal编程技术网

Node.js 调用静态函数返回';不是一个函数';

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

我正在开发一个mean.js堆栈应用程序。当我尝试调用我的一个模型的静态函数时,我得到错误“SomeItem.createNew不是函数”

我从另一个不同模式的静态方法调用这个静态方法,如下所示

不起作用:

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的文件。您对为什么会发生这种情况有更深入的了解吗解决了我的问题?