반응형

curl 을 사용해 로컬에 있는 파일을 업로드하기 위해서는 다음과 같이 --upload-file(-T) 옵션을 사용하면 된다.

curl --upload-file {file path}

 

그런데 위에서 전달받은 파일을 fetch API를 사용해 다른 API의 body로 전달하려고하면 해당 파일의 타입이 ReadableStream이라 실제 파일의 타입으로 내용이 전달되지 않는다.

 

ReadableStream을 원하는 타입으로 전달하기 위해선 다음과 같이 처리하면 된다.

const response = new Response(data as ReadableStream); // stream으로 Response 객체 생성
const text = await response.text();

fetch(url, {
  method: 'post',
  // stream이 javascript 파일이라면 Content-Type 헤더를 설정해주면 된다.
  // headers: {
  //   'Content-Type': 'application/javascript',
  // },
  body: text,
});

 

반응형
반응형

2021-01-13T01:28:30 이라는 문자열을 Date 포맷으로 변경할 때, 다음과 같이 Safari에서의 결과가 잘못 표시되는 현상이 있다.

Firefox
Chrome
Safari

Safari에서는 timezone 값을 Chrome 등 다른 브라우저와 다르게 처리하여 발생하는 것으로 보인다.

해결하려면 국내 기준으로 시간 문자열 뒤에 +09:00를 추가하면 된다.

const datetimeString = '2021-01-13T01:28:30';
new Date(`${datetimeString}+09:00`);

 

하지만 고정 값을 넣는 것이 꺼려진다면 다음과 같이 timezone 값을 입력 시간에 더해주면 된다.

이 경우에는 timezone 식별자인 Z를 시간 문자열 뒤에 추가로 붙여준다.

const datetimeSring = '2021-01-13T01:28:30';
new Date(new Date(`${datetimeString}Z`).getTime() + new Date().getTimezoneOffset() * 60 * 1000);

 

출처: stackoverflow.com/a/54211231/3422425

반응형
반응형

nodejs version 8 미만에서는 함수 호출 파라미터에 trailing comma를 허용하지 않는다. 함수 호출 파라미터에서 trailing comma를 제거한다.

// < v8
myFunction(param1, param2) // ok
myFunction(param1, param2,) // SyntaxError: Unexpected token )

// > v8
myFunction(param1, param2) // ok
myFunction(param1, param2,) // ok

 

참고: trailing comma 사용 이유

 

다음과 같은 코드가 있다고 가정한다.

myFunction({
  param1: "param1"
});

myFunction 의 파라미터 객체에 새로운 값을 추가로 전달해야할 경우 다음과 같이 기존 코드에서도 diff가 발생한다.

myFunction({
  param1: "param1", // diff -- ','
  param2: "param2" // diff -- '  param2: "param2"'
});

이런 경우 실질적으로 작업한 내용은 새로운 값 추가임에도 불구하고 기존 코드의 수정사항이 함께 표시되기때문에 집중이 분산되고, 수정했다고 표시되는 라인의 수도 그만큼 늘어나게 된다.

파라미터 객체의 값 뒤에 comma를 추가하면 기능상에도 문제가 없고, VCS에서도 추가된 부분에 대해서만 깔끔한 diff를 얻을 수 있다.

myFunction({
  param1: "param1",
});

// 작업 후,
myFunction({
  param1: "param1",
  param2: "param2", // diff - '  param2: "param2",'
});

 

번외: 취향차이

어떤 개발자는 위와 동일한 이유로 comma를 앞에 찍기도 한다.

myFunction({
  param1: "param1"
});

// 작업 후,
myFunction({
  param1: "param1"
  , param2: "param2" // diff -- '  , param2: "param2"'
});

깔끔한 diff라는 결과는 얻을 수 있지만, 키 값의 세로 정렬이 불일치하게 되므로 나는 별로 선호하지 않는다.

 

반응형

+ Recent posts