angulaer 2024-08-01 15:39 采纳率: 53.8%
浏览 5

nest使用InjectRepository装饰器遇到问题

nest使用InjectRepository的时候,一直提示"作为表达式调用时,无法解析参数修饰器的签名。类型undefined的参数不能赋给类型string,symbol的参数",运行起来都没有问题,就是它一直报这个提示,我node是v18.12.0

这是service

img

这是entity

img

这是module

img

这是tsconfig.json

img

这是package.json

{
  "name": "nest-project",
  "version": "1.0.0",
  "author": "likai",
  "license": "MIT",
  "private": true,
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build --webpack --webpackPath=./webpack.config.js",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main"
  },
  "dependencies": {
    "@nestjs/axios": "^3.0.1",
    "@nestjs/common": "^8.1.1",
    "@nestjs/core": "^8.1.1",
    "@nestjs/jwt": "^10.2.0",
    "@nestjs/passport": "^10.0.3",
    "@nestjs/platform-express": "^8.1.1",
    "@nestjs/swagger": "^5.2.0",
    "@nestjs/typeorm": "^10.0.1",
    "@types/uuid": "^10.0.0",
    "bcryptjs": "^2.4.3",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.13.2",
    "fastify-swagger": "^5.0.0",
    "ip": "^2.0.1",
    "lodash": "^4.17.21",
    "moment": "^2.30.1",
    "mysql2": "^3.6.5",
    "passport": "^0.7.0",
    "passport-jwt": "^4.0.1",
    "passport-local": "^1.0.0",
    "reflect-metadata": "^0.1.13",
    "request-ip": "^3.3.0",
    "rimraf": "^3.0.2",
    "rxjs": "^7.4.0",
    "save": "^2.9.0",
    "swagger-ui-express": "^4.3.0",
    "typeorm": "^0.3.17",
    "uuid": "^10.0.0"
  },
  "devDependencies": {
    "@nestjs/cli": "^8.1.3",
    "@nestjs/schematics": "^10.0.3",
    "@types/bcryptjs": "^2.4.6",
    "@types/express": "^4.17.13",
    "@types/ip": "^1.1.3",
    "@types/lodash": "^4.17.7",
    "@types/node": "^16.11.1",
    "@types/passport-jwt": "^4.0.1",
    "@types/passport-local": "^1.0.38",
    "@types/request-ip": "^0.0.41",
    "@typescript-eslint/eslint-plugin": "^4.18.0",
    "@typescript-eslint/parser": "^4.18.0",
    "clean-webpack-plugin": "^4.0.0",
    "copy-webpack-plugin": "^10.2.4",
    "eslint": "^7.0.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^3.3.1",
    "fork-ts-checker-webpack-plugin": "^7.2.1",
    "prettier": "^2.2.1",
    "supertest": "^6.1.6",
    "ts-loader": "^9.2.6",
    "ts-node": "^10.9.2",
    "tsconfig-paths": "^3.11.0",
    "tslib": "^2.3.0",
    "typescript": "^4.9.4",
    "webpack": "^5.11.0"
  }
}


  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-08-06 10:57
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题的提示说明在使用InjectRepository装饰器时出现了类型错误,导致参数无法正确解析。这可能是因为NestJS工具无法正确解析装饰器的签名,导致在静态分析时出现错误。虽然在运行时没有问题,但这种错误会影响开发过程的工作流程。 要解决这个问题,可以尝试以下几种方法:
    1. 在tsconfig.json中添加compilerOptions.strictFunctionTypes为false,禁用函数类型检查来尝试解决问题。在tsconfig.json中应该添加以下配置:
    "compilerOptions": {
      "strictFunctionTypes": false
    }
    
    1. 如果设置strictFunctionTypes为false不能解决问题,可以尝试更新NestJS的版本或重装npm包。有时候升级NestJS和npm包可以解决这种类型的错误。
    2. 检查是否有新的TypeScript版本可用,并更新到最新版本。可能有一些bug会在新版本中得到修复。
    3. 如果以上方法都不能解决问题,可以考虑在InjectRepository装饰器所在类中手动定义相关类型以解决问题。 以下是一个示例代码,演示了如何手动定义类型来解决问题:
    import { Injectable } from '@nestjs/common';
    import { InjectRepository } from '@nestjs/typeorm';
    import { Repository } from 'typeorm';
    import { User } from './user.entity';
    @Injectable()
    export class UserService {
      constructor(@InjectRepository(User) private userRepository: Repository<User>) {}
    }
    

    通过手动定义userRepository的类型,可以绕过装饰器无法解析参数修饰器签名的问题。 希望以上方法能帮助解决您遇到的问题。如果仍然无法解决,请尝试寻求更多关于NestJS装饰器签名问题的帮助或浏览NestJS的官方文档。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。