게시글
질문&답변
모듈 버전이 안맞아서 발생하는 문제 같습니다;;;
일단 해당 메시지만으로 오류를 판단하기는 어렵고,혹시 meteor 버전이 어떻게 되는지 확인해 보시기 바랍니다..meteor/release 파일을 열어보면 버전정보를 확인할 수 있습니다.만약 2.14 버전이상일 경우 일단 설치된 미티어를 지우고 다음 명령어로 해당 버전이 미티어를 다시 설치하시기 바랍니다.npm i meteor@2.14 그리고 만약 계속 오류가 난다면프로젝트 폴더를 압축해서 구글드라이브 등에 올린 후 아래 메일로 보내주시면 제가 테스트 해보도록 하겠습니다.freeseamew@gmail.com
- 0
- 2
- 66
질문&답변
meteor 버전 때문에 실행이 안됩니다.
아마도 강좌에 사용된 버전 이후의미티어가 설치되어 발생하는 문제인 것 같습니다.미티어를 삭제 한 후 다음과 같이 버전을 명시적으로 다시한번 설치해주시기 바랍니다npm i meteor@2.14 또 안정적으로 빌드하기 위해서는 node버전 역시 14버전으로 맞추는 것이 좋습니다 강좌에 포함된 nvm을 이용하면 node 버잔을 원하는데로 변경할 수 있을 것립니다 참고로 미티어3.0 지원은 추후에 연동된 다른 패키지 들이 안정화 되면 진행될 예정입니다 이점 참고 부탁드립니다 이후 안된다면 다시한번 문의 부탁드리겠습니다 그리고 현제 테스트가 가능한 환경이 아니라 5.6일 이후에 테스트가 필요한 문의는 답변이 가능할 것 같습니다
- 0
- 2
- 42
질문&답변
graghQL의 transaction 처리속도가 궁금합니다.
transaction 처리가 필요한create, updat, delete에 대한 실제적인 구현의 경우 결국 mutation에 작성된 서버와 DB와의 통신 부분에서 이루어 집니다. 그리고 이 DB와의 통신 부분에 대한 처리는 REST 서버를 만들때와 크게 다르지는 않습니다. graphql에서 강조하는 유연성의 경우 서비스를 만들때 데이터 조회시 정해진 형태가 아닌 다양한 형태를 조회할 수 있게 만든 것이 핵심이라고 생각합니다. 작성된 예제를 보더라도 추가, 수정, 삭제는 딱히 상황에 따라 변경되는 부분은 없습니다. 유연성이 강조된 부분은 데이터 조회에 대한 부분이기 때문입니다.제가 이해한 부분이 다른 부분이라면 다시 한번 문의 부탁 드리겠습니다 감사합니다.
- 0
- 2
- 32
질문&답변
401 not expired token 에러 메세지는 언제 쓰이나요?
이부은 not 이 잘 못 들어간 것 같습니다.이해하신 것 처럼 401의 경우 토큰이 잘 못 되었을 때 보여주는 오류가 맞습니다.그래서 아래와 같이 수정해서 사용하면 되겠습니다. expired: { success: false, status: 401, message: 'Token Expired' },
- 0
- 2
- 43
질문&답변
질문있습니다.
강좌에 사용된 svelte 버전은 v3 버전입니다.하지만 v5에서도 v3의 코드를 대부분 사용가능한 것으로 알고 있습니다. (v5까지는 v3의 기능들을 대부분 하위 호환되도록 하고 있는 것으로 알고 있습니다. )다만 meteor 환경에서 apollo를 이용한 개발을 하기 위해서는 현재까지도 v3가 안정적인 것으로 알고 있습니다.또 이 강좌에서도 svelte기초 문법을 다루는 챕터가 있으니 이 강좌만으로 충분할것으로 생각됩니다.하지만 REST API를 이용해 개발하는 방법의 경우는 ‘Svelte REST-API 프로젝트’ 라는 무료 강좌가 있으니 이를 함께 학습해 보는 것도 좋을 것 같습니다.
- 0
- 2
- 48
질문&답변
Meteor 실행 오류 문의 드립니다.
일단 오류 상으로는 cpu 타입이 잘 못 됐다고 나오는 것 같습니다.혹시 사용하시는 환경이 맥북의 m1 이상인지 확인해 보시고만약 m1 타입(m1~m4까지) 이라면 로제타를 이용해 실행해 보시기 바랍니다. (현재 제가 m1 계열의 pc가 없어 확인이 힘들지만 meteor 2.5.1 버전 이후에는 기본적으로 m1계열의 cpu를 지원 하는 것으로 알고 있습니다. 아래는 그것과 관련된 문서 링크입니다. https://docs.meteor.com/about/install.html )그리고 혹시 다른 os(예를 들어 윈도우즈) 환경에서 이미 npm install을 실행하고그것을 현재 사용하시는 PC로 그대로 옮기셨다면 cpu타입이 달라 실행되지 않을 수 있습니다. 이럴 때에는 그냥 git에서 다시 다운받아 npm install을 해야 합니다. 그리고 괜찮으시다면 사용하시는 pc의 환경을 확인 부탁드리겠습니다.
- 0
- 1
- 95
질문&답변
Swagger 문서 접근 권한
swagger에 비밀번호를 적용하는 방법으로 basic-auth라는 것을 이용하는 방법이 있습니다.설정에 관하여 간단하게 설명을 드리도록 하겠습니다.우선 fastify/basic-auth를 다음과 같이 설치해 주시기 바랍니다.참고로 강좌의 fastify버전의 경우 v4버전이기 때문에 basic-auth는 5버전을 사용하셔야 합니다. npm i @fastify/basic-auth@5 다음으로 main.ts를 열고 필요한 설정을 해야 합니다 .fastify에서 필요한 FastifyRequest, FastifyReply, HookHandlerDoneFunction을 불러오고여기에 설치한 BasicAuth를 가져와 줍니다.여기에 validate함수를 만들고 여기에서 아이디, 패스워드를 확인하도록 설정합니다다음으로 register로 basicAuth를 등록하고 validate 함수를 연동해 줍니다.이제 addHook에 onRequest를 설정하고접근하는 url이 documentation일 경우 이 basic-auth가 작동하게 만들면 되겠습니다.여기서 주의할 점으로 기존 예제와 달리 main.ts에서 register로 각종 플러그인을 등록할 경우 await을 사용해야 한다는 것입니다.이부분을 유의해서 사용해 보시기 바랍니다. main.tsimport Fastify from 'fastify' import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox' import type { FastifyCookieOptions } from '@fastify/cookie' import fasstifyCookie from '@fastify/cookie' import routes from './routes' import { SECRET_KEY } from './lib/constants' import { currentlyAuthPlugin } from './plugin/authPlugin' import { checkStartupUser, checkStartupArticle } from './startup' import cors from '@fastify/cors' import fastifySwagger from '@fastify/swagger' import fastifySwaggerUi from '@fastify/swagger-ui' import { swaggerConfig, swaggerUiConfig } from './config/swagger' //추가코드 import { FastifyRequest, FastifyReply, HookHandlerDoneFunction } from 'fastify' import BasicAuth from '@fastify/basic-auth'; const fastify = Fastify({ logger: true, // https: { // key: fs.readFileSync('./server.key'), // cert: fs.readFileSync('./server.crt'), // } }).withTypeProvider() // fastify.get('/ping', async (request, reply) => { // return 'pong\n' // }) // 각 register등록시 await 사용 await fastify.register(cors, { origin: true, // Access-Control-Allow-Origin credentials: true, //Access-Control-Allow-Credentials }) await fastify.register(fastifySwagger, swaggerConfig) await fastify.register(fastifySwaggerUi, swaggerUiConfig) await fastify.register(fasstifyCookie, { secret: SECRET_KEY, } as FastifyCookieOptions ) await fastify.register(currentlyAuthPlugin) await fastify.register(routes) // basic-auth with swagger 추가 코드 const authenticate = {realm: 'Westeros'} await fastify.register(BasicAuth, {validate, authenticate}) function validate (username:string, password:string, req:FastifyRequest, reply:FastifyReply, done:HookHandlerDoneFunction) { if (username === 'admin' && password === '1111') { done() } else { done(new Error('Winter is coming')) } } fastify.addHook("onRequest", (req:FastifyRequest, res:FastifyReply, done:HookHandlerDoneFunction) => { if (req.url.startsWith(`/documentation`)) { fastify.basicAuth(req, res, done); } else { done(); } }) const start = async () => { try { await checkStartupUser() await checkStartupArticle() await fastify.listen({port: 8083}) console.log(`Server Start!!`) } catch(error) { fastify.log.error(error) process.exit(1) } } start()
- 0
- 1
- 90
질문&답변
Window 환경에서 meteor 설치하는 부분에 대해 실습환경 구축 부분에 추가내용이 없습니다.
windows, mac 모두 npm 명령어로 인스톨이 가능합니다.하지만 얼마전 meteor version3로 업데이트 되어 강좌에서 사용한 version2와 호환문제가 있을 수 있습니다.그래서 다음과 같이 meteor뒤에 @2를 작성해서 meteor version2를설치하시기 바랍니다. npm install -g meteor@2
- 0
- 3
- 130
질문&답변
앱에 refreshToken을 전송할때 궁금한점이 있습니다.
개인적으로 저는 보통 웹 기반의 서비스와 하이브리드앱 제작을 주로 해서 네이티브에 대한 지식은 한정적이라는 것을 우선 양해 부탁드리겠습니다.jwt의 핵심은 결국 json 키를 이용한 인증이기 때문에 cookie를 사용할 수 없는 환경이라면 access token과 마찬가지로 json 파일을 header등에 실어 보내는 방법이 가장 심플한 방법일 것으로 예상됩니다.대신 키의 저장을 ios나 안드로이드에서 좀 더 안전한 곳에 보관할 수 있는 방법을 찾아 관리를 해야 할 것으로 예상됩니다.
- 0
- 2
- 162
질문&답변
리액트에서 적용할 때 질문있습니다.
제가 react를 써본지 오래 되서 정확히 어떤 부분을 어떻게 적용해야 하는지에 대해서 정확하게 알려드리기는 힘들지만 제가 알고 있는 부분에서 제 의견을 말씀드리겠습니다.우선 긍정적으로 검토가 가능한 부분은 현재 apollo-client에서 메인으로 지원하는 프런트엔드는 react가 된다는 점입니다.아래 링크를 보시면 apollo-client를 react로 어떻게 사용하는 것인지에 대한 전반적인 정보를 얻을 수 있을 것입니다.https://www.apollographql.com/docs/react/get-started또 svelte에서의 steore는 react에서 비슷한 개념으로 redux나 recoil 등 전역 상태 관리 라이브러리를 사용하셔야 할 것 같습니다. 비슷한 패턴으로 react를 작성하기 위해서는 이부분을 참고해서 백엔드서버로 부터 가져온 데이터를 이 전역 스토어에 저장하고 이를 불러 사용하는 패턴으로 사용하면 되지 않을까 생각됩니다.
- 0
- 1
- 147