Node.js JS(TYPESCRIPT)属性';需求';不存在于类型';节点模块';
我在子文件中使用this.status和this.req时遇到问题 我像这样初始化路由索引Node.js JS(TYPESCRIPT)属性';需求';不存在于类型';节点模块';,node.js,typescript,Node.js,Typescript,我在子文件中使用this.status和this.req时遇到问题 我像这样初始化路由索引 router.use(response); 我的索引文件在下面 import {Request,Response,NextFunction} from 'express' module.exports = function(req:Request, res:Response, next:NextFunction){ const responseTypes = { unproce
router.use(response);
我的索引文件在下面
import {Request,Response,NextFunction} from 'express'
module.exports = function(req:Request, res:Response, next:NextFunction){
const responseTypes = {
unprocessable: require('./unprocessable')
};
res = {...res, ...responseTypes};
next();
};
这是我的unprocessable.ts文件
import log from '../logger'
import queue from '../queue'
module.exports = function (data, message) {
log.warn('Sending unprocessable entity response: ', data, message || 'unprocessable entity');
const req = this.req;
const res = this;
// Dump it in the queue
const response = { response: { status: 'error', data: data, message: message ? message : 'unprocessable entity' } };
response.requestId = req.requestId;
queue.add('logResponse', response);
if (data !== undefined && data !== null) {
if (Object.keys(data).length === 0 && JSON.stringify(data) === JSON.stringify({})) {
data = data.toString();
}
}
if (data) {
this.status(422).json({ status: 'error', data: data, message: message ? message : 'unprocessable entity' });
} else {
this.status(422).json({ status: 'error', message: message ? message : 'unprocessable entity' });
}
};
它在unprocessable.ts文件中抱怨以下问题
import log from '../logger'
import queue from '../queue'
module.exports = function (data, message) {
log.warn('Sending unprocessable entity response: ', data, message || 'unprocessable entity');
const req = this.req;
const res = this;
// Dump it in the queue
const response = { response: { status: 'error', data: data, message: message ? message : 'unprocessable entity' } };
response.requestId = req.requestId;
queue.add('logResponse', response);
if (data !== undefined && data !== null) {
if (Object.keys(data).length === 0 && JSON.stringify(data) === JSON.stringify({})) {
data = data.toString();
}
}
if (data) {
this.status(422).json({ status: 'error', data: data, message: message ? message : 'unprocessable entity' });
} else {
this.status(422).json({ status: 'error', message: message ? message : 'unprocessable entity' });
}
};
如果我使用此.status,则类型“NodeModule”上不存在属性“status”
如果使用this.req,则类型“NodeModule”上不存在属性“req”
我不知道如何解决这个问题,因为我对typescript是新手,在使用
这个
关键字时,typescript在很大程度上不知道您指的是什么
但是,您可以告诉typescript您所说的这是什么意思,例如:
function someFunction(this:object){
//用这个做点什么
}
在您的情况下,此
指的是从express扩展响应
的对象,因此您可以执行以下操作:
const{Response}=require('express');
接口IModifiedResponse扩展响应{
//在此处定义您的属性
无法处理:(数据:对象,消息:字符串)=>void
}
函数不可处理(此:IModifiedResponse,数据:object,消息:string){
//在你的函数中使用这个
}
但是,我不知道this.req指的是什么,因为响应没有req属性。看
希望这个答案有帮助:)