인프런 커뮤니티 질문&답변

jay kang님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

swaggerui에서 execute했는데 console에서는 계속 typeerror로 n.get함수가 없다는 에러가 발생합니다.

해결된 질문

작성

·

452

0

스크린샷 2023-07-17 19.25.24.pngjavascript문서를 확인했을때는 배열을 객체로쓴다던가 함수를 부를수없는곳에 작성했다는등의 오류라고 나와있는데 아무리 찾아봐도 그오류가 어디에서 나오는지 왜나오는지를 알수없어서 질문올립니다.

// index.js

import express from "express";
import { options, dataCoffee, dataUsers } from "./swagger/config.js";
import cors from "cors";

const app = express();
import swaggerUi from "swagger-ui-express";
import swaggerJSDoc from "swagger-jsdoc";

app.use(express.json());
const swaggerSpec = swaggerJSDoc(options);
app.use(cors());
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerSpec));

app.get("/users", (req, res) => {
  res.send(dataUsers);
});

app.get("/starbucks", function (req, res) {
  res.send(dataCoffee);
});

app.listen(3001);

// config.js

export const options = {
  definition: {
    openapi: "3.0.0",
    info: {
      title: "swagger-test",
      version: "1.0.0",
    },
  },
  apis: ["./swagger/*-swagger.js"], // files containing annotations as above
};

export const dataCoffee = [
  { name: "아메리카노", kcal: 5 },
  { name: "카푸치노", kcal: 125 },
  { name: "헤이즐넛", kcal: 85 },
  { name: "카라멜마키아또", kcal: 225 },
  { name: "휘핑크림추가", kcal: 115 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
  { name: "아메리카노", kcal: 5 },
];

export const dataUsers = [
  {
    email: "aaa@gmail.com",
    name: "짱구",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
  {
    email: "aaa@gmail.com",
    name: "짱구2",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
  {
    email: "aaa@gmail.com",
    name: "짱구3",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
  {
    email: "aaa@gmail.com",
    name: "짱구4",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
  {
    email: "aaa@gmail.com",
    name: "짱구5",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
  {
    email: "aaa@gmail.com",
    name: "짱구6",
    phone: "010-2293-3333",
    personal: "222012-2210392",
    prefer: "https://google.com",
  },
];

// all-swagger.js

/**
 * @swagger
 * /starbucks:
 *   get:
 *     summary: 커피
 *     tags: [Coffee]
 *     parameters:
 *         name: String
 *         kcal: int
 *     responses:
 *       200:
 *         description: 성공
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 properties:
 *                   name:
 *                     type: String
 *                     example: 아메리카노
 *                   kcal:
 *                     type: int
 *                     example: 5
 */

/**
 * @swagger
 * /users:
 *   get:
 *     summary: 유저검색
 *     tags: [Users]
 *     parameters:
 *         name: String
 *         kcal: int
 *     responses:
 *       200:
 *         description: 성공
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 properties:
 *                   name:
 *                     type: String
 *                     example: 아메리카노
 *                   kcal:
 *                     type: int
 *                     example: 5
 */

답변 2

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! Daon님!

올려주신 소스코드를 복사해서 실행해본 결과, 해당 에러 메시지는 나타나지 않네요!
또한, 해당 에러 메시지는 백엔드코드와 크게 관련이 있어 보이진 않습니다!

따라서, 버전상의 문제이거나 해당 스웨거와는 관련 없는 코드일 수 있을 것 같아요!^^

jay kang님의 프로필 이미지
jay kang
질문자

그러면 이부분은 버전을 다르게해보고 실행해봐야할까요 그부분도 의심되서 수업때한 버전이랑 다른지도 확인하고 해봤거든요

 

노원두님의 프로필 이미지
노원두
지식공유자

네! Daon님!

해당 에러메시지를 확인해보니, swagger-ui 내부에 설치된 프론트엔드 관련 라이브러리(react, redux 등)에 관한 에러 메시지인 것 같네요!

우리가 다운로드 받는 라이브러리도 다른 사람이 만들어서 무료로 공개한 것이므로, 버전, 버그, 패치 등에 영향을 받을 수 있습니다.

기능상으로 이상이 있으시다면, 수업에서 진행했던 내용으로도 문제가 되는지 먼저 확인해 보시고, 수업에서 진행했던 내용마저도 동일한 에러가 발생하신다면, 버전을 변경해서 시도해 보시는게 좋을 것 같아요!

jay kang님의 프로필 이미지
jay kang
질문자

수업시 내용에는 문제가없는데 제가 과제로 하는것만 문제가된다면 리액트랑 리덕스랑 버전이든 어떠한 환경설정문제로 판단해야할까요?

노원두님의 프로필 이미지
노원두
지식공유자

네! 동일한 버전에 수업 코드는 잘 되는데, 수정된 코드만 안된다면 코드상의 문제이겠지만, 해당 버전으로 수업 코드도 동일한 이슈가 발생한다면 버전 문제라고 보는게 좋을 것 같네요!

0

안녕하세요, 인프런 AI 인턴이에요.

제가 보기에는 소스 코드에서 n.get 함수가 정의되지 않았기 때문에 에러가 발생한 것 같아요.

index.js 파일에는 n.get 함수가 어디에도 정의되지 않았고, config.js 파일에도 n.get 함수 관련 코드가 없는 것으로 보입니다.

혹시 n.get 함수를 사용하려는 목적이 무엇인지 알려주실 수 있을까요? 그리고 에러 메시지에 표시된 코드도 함께 알려주시면 더 정확한 답변을 드릴 수 있어요.

jay kang님의 프로필 이미지

작성한 질문수

질문하기