JavaScript4 헷갈리는 Lodash import 구문 : import * as _는 되고 import _는 안 되는 이유 저는 Typescript를 사용하면서 Lodash라는 라이브러리를 자주 사용했습니다.그런데 lodash를 import할 때 이런 두 가지 방식 중 어떤 건 되고, 어떤 건 안 되는 경험을 다들 해보셨나요?import * as _ from 'lodash'; // ✅ 잘 됨import _ from 'lodash'; // ❌ 에러 발생! 🧐 원인은? 모듈 시스템의 차이!이 문제는 CommonJS와 ES 모듈(ESM)이라는 모듈 시스템의 차이 때문에 발생합니다. 🌱 CommonJS (Node.js에서 주로 사용)lodash는 전통적으로 CommonJS 방식으로 배포되어 있습니다.CommonJS는 module.exports를 사용하며, default export 개념이 없습니다.모듈 전체를 하나의.. 2025. 6. 24. readExcelFile로 병합된 셀을 잘 받아오는 법 엑셀에서 병합된 셀을 불러오는 경우이런식으로 엑셀의 행 중에 병합된 요소가 존재할때 readExcelFile을 사용해 읽어오면제조사월사용량(kg)단위물질명Cas No함유량(%)관리대상물질개정일자비고기타 제조사50kg아르곤7440-37-11012024.9.29비고 수소1333-74-052 공업 제조사200g메탄올67-56-1532025.4.2이상없음이렇게 공통된 요소가 빈값으로 넘어오게 됩니다. 병합된 셀을 잘 받아오기 위해let content = data.slice(1).filter((items) => items?.length > 0); let currentProduct = null; // 앞에서부터 9개의 아이템 + 뒤에 2개의 아이템이 null이면 병합된 셀로 판단 // 물질명 .. 2024. 10. 4. zod : 원하는 message가 아닌 ‘expected ~ but got ~’ 라 alert가 뜨는 현상 // 에러가 발생한 코드const formValidation = z.object({ use_state: z .string({ required_error: "사용여부를 선택해주세요." }) .trim() .min(1, { message: "사용여부를 선택해주세요." }), use_purpose: z .string({ required_error: "사용용도를 입력해주세요." }) .trim() .min(1, { message: "사용용도를 입력해주세요." }), product_name: z .string({ required_error: "제품명을 입력해주세요." }) .trim() .min(1, { message.. 2024. 10. 4. Raw SQL 쿼리를 Sequelize ORM 쿼리로 바꾸는 방법 Raw SQL 쿼리를 활용해 원하는 레코드의 컬럼을 가지고 다양한 평균값을 내려고 했는데동작이 안되더라고요! 그래서 Sequelize ORM 쿼리를 활용해 함수를 다시 만들었습니다 🤔 Sequelize ORM 쿼리를 활용해 만든 함수의 장점- 간결하다- 이해가 쉽다- 유지보수가 쉽다 Raw SQL 쿼리를 사용한 코드async getTeamAvg(team_id) { try { const result = await db.sequelize.query( `SELECT AVG(ac.job_requirement_score) AS team_job_req_avg, AVG(ac.job_autonomy_score) AS team_job_auto_avg, AVG(a.. 2024. 9. 14. 이전 1 다음