Node.js | TypeError: [...] 不是函数

     2023-02-19     31

关键词:

【中文标题】Node.js | TypeError: [...] 不是函数【英文标题】:Node.js | TypeError: [...] is not a function 【发布时间】:2018-03-19 02:20:10 【问题描述】:

在我的主文件 server.js 中,我有以下功能:

server.js

const mongoose = require('mongoose');
const SmallRounds = require('./models/smallrounds.js');

function initRound()
    logger.info('Initializing round...');
    SmallRounds.getLatestRound((err, data) => 
        [...]
    );

函数 getLatestRound() 被导出到我的猫鼬模型 smallrounds.js 中

smallrounds.js

const mongoose = require('mongoose');
const config = require('../config.js');

const SmallRoundsSchema = mongoose.Schema(
    [...]
);

const SmallRounds = module.exports = mongoose.model('SmallRounds', SmallRoundsSchema);

module.exports.getLatestRound = function(callback)
    SmallRounds.findOne().sort( created_at: -1 ).exec((err, data) => 
        if(err) 
            callback(new Error('Error querying SmallRounds'));
            return;
        
        callback(null, data)
    );

但是当我调用 initRound() 时出现以下错误:

TypeError: SmallRounds.getLatestRound 不是函数

在 initRound (E:\Projects\CSGOOrb\server.js:393:14) 在 Server.server.listen (E:\Projects\CSGOOrb\server.js:372:2) 在 Object.onceWrapper (events.js:314:30) 在 emitNone (events.js:110:20) 在 Server.emit (events.js:207:7) 在 emitListeningNT (net.js:1346:10) 在 _combinedTickCallback (internal/process/next_tick.js:135:11) 在 process._tickCallback (internal/process/next_tick.js:180:9) 在 Function.Module.runMain (module.js:607:11) 启动时 (bootstrap_node.js:158:16) 在 bootstrap_node.js:575:3

为什么会这样?我不认为我有循环依赖,也没有拼错任何东西。谢谢:)

【问题讨论】:

可能mongoose.model 中返回的对象被冻结了还是什么?确保您需要的文件与本文中的完全一致。 是的,我复制粘贴了代码 【参考方案1】:

我使用大写模块,并收到错误TypeError: upperCase is not a function l

et upperCase =require("upper-case") ;
res.end(upperCase("Hello World"));

每个教程都是这样写的。

我改成

res.end(upperCase.upperCase("Hello World"));

工作正常

【讨论】:

【参考方案2】:

这不是您向 Mongoose 模型/模式添加方法的方式。

试试这个:

const mongoose = require('mongoose');
const config = require('../config.js');

const SmallRoundsSchema = mongoose.Schema(
    [...]
);

SmallRoundsSchema.statics.getLatestRound = function(callback)
    this.findOne().sort( created_at: -1 ).exec((err, data) => 
        if(err) 
            callback(new Error('Error querying SmallRounds'));
            return;
        
        callback(null, data)
    );


const SmallRounds = module.exports = mongoose.model('SmallRounds', SmallRoundsSchema);

您可以在此处阅读文档:http://mongoosejs.com/docs/guide.html,位于“静态”部分。还有其他更好的方法可以达到相同的结果,但这会让你开始。

【讨论】:

非常感谢。我真的不知道我的代码发生了什么,几个月来我一直在为这些函数使用 module.exports 并且从来没有遇到过问题,除了今天它突然停止工作。

node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”

】node.js/discord.js:TypeError:无法读取null的属性“setPresence”【英文标题】:node.js/discord.js:TypeError:Cannotreadproperty\'setPresence\'ofnull【发布时间】:2020-02-1622:19:19【问题描述】:尝试一个简单的测试,但我从这一行得到一个错误:clie... 查看详情

TypeError:x 不是 Node.js 中的函数

】TypeError:x不是Node.js中的函数【英文标题】:TypeError:xisnotafunctioninNode.js【发布时间】:2018-11-2613:37:24【问题描述】:我正在开发一个Electron应用程序,我的目标是“拆分”index.js(主进程)文件。目前,我已将与菜单栏相关和... 查看详情

node.js“TypeError:无法读取未定义的属性'auth_token'”

】node.js“TypeError:无法读取未定义的属性\\\'auth_token\\\'”【英文标题】:node.js"TypeError:Cannotreadproperty\'auth_token\'ofundefined"node.js“TypeError:无法读取未定义的属性\'auth_token\'”【发布时间】:2021-11-2415:59:52【问题描述】:... 查看详情

Node.js Discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”

】Node.jsDiscord.jsUnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”【英文标题】:Node.jsDiscord.jsUnhandledPromiseRejectionWarning:TypeError:Cannotreadproperty\'calculatedPosition\'ofundefined【发布时间】:2020 查看详情

Node.js UnhandledPromiseRejection:TypeError:无法读取未定义的属性“符号”

】Node.jsUnhandledPromiseRejection:TypeError:无法读取未定义的属性“符号”【英文标题】:Node.jsUnhandledPromiseRejection:TypeError:Cannotreadproperty\'sign\'ofundefined【发布时间】:2018-03-1801:37:21【问题描述】:tran.jsvarCoinStack=require(\'coinstack-sdk 查看详情

TypeError:ws.onopen 不是 stomp-node.js 中的函数

】TypeError:ws.onopen不是stomp-node.js中的函数【英文标题】:TypeError:ws.onopenisnotafunctioninstomp-node.js【发布时间】:2019-02-0204:56:06【问题描述】:我需要使用nodejs为javascript运行stomp客户端并通过websocket发送stomp消息。我有一个js文件send... 查看详情

Node.js Discord Bot:TypeError:无法读取未定义的属性“消息”

】Node.jsDiscordBot:TypeError:无法读取未定义的属性“消息”【英文标题】:Node.jsDiscordBot:TypeError:Cannotreadproperty\'message\'ofundefined【发布时间】:2019-05-1401:14:21【问题描述】:我仍在学习discord.js,但我正在努力将一个不和谐的消息... 查看详情

Node.js:在没有返回记录的 SQL 查询中:TypeError:无法读取未定义的属性

】Node.js:在没有返回记录的SQL查询中:TypeError:无法读取未定义的属性【英文标题】:Node.js:OnSQLquerythatreturnsnorecord:TypeError:Cannotreadpropertyofundefined【发布时间】:2019-02-0518:11:39【问题描述】:更新:开始工作了见底部。我有这个... 查看详情

Node.js 和 jdbc:TypeError:无法读取未定义的属性“url”

】Node.js和jdbc:TypeError:无法读取未定义的属性“url”【英文标题】:Node.jsandjdbc:TypeError:Cannotreadproperty\'url\'ofundefined【发布时间】:2017-09-2213:46:24【问题描述】:我是nodejs和JavaScript的新手。我正在尝试一个将MySQL连接到nodejs的非... 查看详情

node.js读取目录报错“typeerror:cannotreadpropertiesofundefined(reading‘isdirectory‘)“(代码片段)

异常D:\\NodeJs\\node-demo\\demo\\world.js:3console.log(stats.isDirectory())^TypeError:Cannotreadpropertiesofundefined(reading'isDirectory')atD:\\NodeJs\\node-demo\\demo\\world.js:3:22atFSReqCall 查看详情

Node.js TypeError无法读取未定义的属性objectId

】Node.jsTypeError无法读取未定义的属性objectId【英文标题】:Node.jsTypeErrorCannotreadpropertyobjectIdofundefined【发布时间】:2016-06-1016:41:51【问题描述】:我想使用RESTAPI导入Parse.com的JSON文件是:"results":["TELEPHONENUMBER":"555","FAMILYNAMES":"smith,... 查看详情

Node.js TypeError:无法读取未定义的属性“作者”

】Node.jsTypeError:无法读取未定义的属性“作者”【英文标题】:Node.jsTypeError:Cannotreadproperty\'author\'ofundefined【发布时间】:2021-05-1108:43:48【问题描述】:(已更新)问题:我无法返回我所有的测试数据(如图所示)Nodatashowup我期... 查看详情

获取TypeError:无法在mysql node.js中调用null的方法'releaseConnection'

】获取TypeError:无法在mysqlnode.js中调用null的方法\\\'releaseConnection\\\'【英文标题】:gettingTypeError:Cannotcallmethod\'releaseConnection\'ofnullinmysqlnode.js获取TypeError:无法在mysqlnode.js中调用null的方法\'releaseConnection\'【发布时间】:2013-09-132 查看详情

Node.js 和 Socket.io UTF8 验证 TypeError 来自 ws

】Node.js和Socket.ioUTF8验证TypeError来自ws【英文标题】:Node.jsandSocket.ioUTF8ValidationTypeErrorcomingfromws【发布时间】:2017-07-1820:09:44【问题描述】:验证通过socket.io从客户端接收到的数据时出现此错误。C:\\Users\\Rayce\\Documents\\SENG513\\node-j... 查看详情

TypeError:Task.find 不是 Node Js 中的函数

】TypeError:Task.find不是NodeJs中的函数【英文标题】:TypeError:Task.findisnotafunctioninNodeJs【发布时间】:2021-01-0803:31:18【问题描述】:我的模型有问题。我已连接到MongoDB,并且我的服务器运行良好。但是我无法通过TaskController路由。... 查看详情

为啥不和谐的客户端有错误输出:TypeError:node.js中的[CLIENT_MISSING_INTENTS]?

】为啥不和谐的客户端有错误输出:TypeError:node.js中的[CLIENT_MISSING_INTENTS]?【英文标题】:Whydoestheclientindiscordhaveanerrorthatoutputs:TypeError:[CLIENT_MISSING_INTENTS]innode.js?为什么不和谐的客户端有错误输出:TypeError:node.js中的[CLIENT_MISSIN... 查看详情

TypeError:无法读取未定义 node.js V12.18.2 的属性“startsWith”

】TypeError:无法读取未定义node.jsV12.18.2的属性“startsWith”【英文标题】:TypeError:Cannotreadproperty\'startsWith\'ofundefinednode.jsV12.18.2【发布时间】:2020-11-0305:47:42【问题描述】:这是我在这里提出的第一个问题,如果我错过了一些信息... 查看详情

C 和 Node.js 之间的 IPC 导致“TypeError: Unsupported fd type: UNKNOWN”

】C和Node.js之间的IPC导致“TypeError:Unsupportedfdtype:UNKNOWN”【英文标题】:IPCbetweenCandNode.jsresultsin"TypeError:Unsupportedfdtype:UNKNOWN"【发布时间】:2018-05-2507:39:40【问题描述】:我正在尝试在一个简单的C程序和Node.js之间设置进程... 查看详情