Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발공부일지

NodeJS - 내장 모듈, fs, path, readFile, writeFile / 외장 모듈, NPM, dotenv 본문

NodeJS

NodeJS - 내장 모듈, fs, path, readFile, writeFile / 외장 모듈, NPM, dotenv

보람- 2023. 8. 28. 14:22

 


목차

1. 내장모듈

① 파일 읽기 (readFile)

② 파일 만들기, 쓰기 (writeFile)

 

2. 외장모듈 (npm)

- dotenv


 

1. 내장모듈

 

- fs : file system으로 비동기처리를 위해 promise를 사용한다.

   - 그전에 require으로 사용해보기

- path

- buffer

 

 

① 파일 읽기 (readFile)

const fs = require("fs");
// console.log(fs); //{}

// 1경로 2옵션 3callback  (옵션은 생략가능)
console.log("hello world");
fs.readFile("./README.md", (err, data) => {
  //   console.log("err:", err);
  if (err) throw err;
  console.log(data.toString());
});

console.log("끝!");
console.log(__dirname);
//  /mnt/c/Users/KGA_29/Desktop/blockchain10/nodejs
console.log(__filename);
//  /mnt/c/Users/KGA_29/Desktop/blockchain10/nodejs/002.js
const path = require("path");
console.log(path); // {} join이라는 메서드를 가장많이 사용
const fs = require("fs");
const path = require("path");

const FILE_NAME = "README.md";
const file = path.join(__dirname, FILE_NAME);
console.log(file);

fs.readFile(file, (err, data) => {
  if (err) throw err;
  console.log(data.toString());
});

 

 

 

② 파일 만들기, 쓰기 (writeFile)

const fs = require("fs");
fs.writeFile(filename, file에 들어갈내용, 성공여부에대한 콜백);
const fs = require("fs");
const path = require("path");
const FILE_NAME = "README2.md";
const filepath = path.join(__dirname, FILE_NAME);

fs.writeFile(FILE_NAME, "# Sample", (err) => {
  if (err) throw err;

  fs.readFile(filepath, (err, data) => {
    if (err) throw err;
    console.log(data.toString());
    console.log("파일 생성 성공!");
  });
});

 

 

 

※ 'var'라는 텍스트 파일 안에서 데이터로 스트링 조작하기

host=127.0.0.1
port=3306
user=root
password=root
{ host: '127.0.0.1', port: '3306', user: 'root', password: 'root' }
const fs = require("fs");
const path = require("path");

const FILE_NAME = "var";
const filepath = path.join(__dirname, FILE_NAME);

fs.readFile(filepath, (err, data) => {
  if (err) throw err;
  const result = data
    .toString()
    .split("\n")
    .filter((v) => v)
    .map((v) => v.split("="))
    .reduce((acc, v) => {
      console.log(v[0], v[1]);

      const [key, value] = v;
      acc[key] = value;
      return acc;
    }, {});

  console.log(result);

  console.log(result.host);
  console.log(result.port);
  console.log(result.user);
});

 

 

 

③ process.env

- OS마다 '시스템 환경 변수'라는 변수가 존재한다.

   - 윈도우 : 시스템 환경변수

   - MAC, Linux : export

 

 

- 시스템 환경변수 설정하기

export TEST_PORT=3000

# export 확인하기
export | grep TEST_PORT

console.log(process.env);

- port의 경우 프로젝트마다 시스템 환경변수가 겹칠수 있기때문에 프로젝트마다 포트를 나눠줘야하는데, 그걸 도와주는 모듈이 있다!

 

 

 

 

2. 외장모듈

 

- linux에서 pm (package manager)처럼 NodeJS에서도 pm이 존재한다. → npm

npm init
npm install -g npm@9.8.1

npm install dotenv

- npm init 을 입력하면 현재 사용하고있는 디렉토리에 package.json 파일이 생성된다.

   - 현재 사용하고있는 디렉토리에서만 사용이 가능함

- npm 업데이트를 해준다. (업데이트하라고 알려줬을 경우!)

- npm install dotenv 를 설치하면 현재 디렉토리에서 node_modules 디렉토리가 생성된다.

- .env 파일을 만들어 TEST_ID=boram 을 저장하고 

require("dotenv").config();
console.log(process.env.TEST_ID);

 

 


※ 공식문서 보면서 공부하기

https://nodejs.org/dist/latest-v18.x/docs/api/

 

Index | Node.js v18.17.1 Documentation

 

nodejs.org

 

※ 학습내용 github에 올릴거라면 .gitignore 파일만들어서

    - node_modules 디렉토리, package.json, .env 파일들 넣어주기

 

 

※ 과제

1. readFile() 이걸 promise로 바꿔보기


2. 스트링 조작하기 (텍스트파일하나 만들어서)
   name=ingoo&id=web7722&page=10
   배열메서드만 써서 {}객체로 만들기
3. http 파일 만들어서  내용으로 
   GET /hello HTTP/1.1
   Content-type: applicatino/json

Hello world!
dfdffd
dfdfdf
//// 아래내용이 나오게 하기
method: GET
path : /hello
version : HTTP/1.1
Content-type: applicatino/json
body: 'Hello world!
dfdffd
dfdfdf'