기본 콘텐츠로 건너뛰기

express 2.0 에서 3.0으로 바꿀때 주의할 점.

하드 파티션이 날아가서 새로 셋업하고
작업하던 소스를 받아와서 아무생각 없이 npm install 했더니
express 3.0으로 되어있더라.

기존의 소스는

express = require 'express'
gzippo = require 'gzippo'
fs = require 'fs'
http = require 'http'
app = express.createServer()
path = require 'path'

tmpl =
  compile: (source, options)->
    (locals)->
      # 여기에 템플릿 뽁찡
      source
 
port = process.env.VMC_APP_PORT || 3000
app.configure ->
  app.set 'views', "#{__dirname}/../public"
  app.use app.router
  app.set 'view options', layout: false
  app.set 'view engine', 'html'
  app.register '.html', tmpl
  app.use gzippo.staticGzip "#{__dirname}/../public"

app.get '/', (req,res) ->
  res.render "./html/index.html"

app.listen port, ->
  console.log "Listening on #{port}"

이런 식으로 썼다면



express = require 'express'
fs = require 'fs'
http = require 'http'
app = express()

tmpl = (path, options, fn) ->
  fs.readFile path, 'utf8', (err,str) ->
    # 오류처리하고 템플릿 뽁찡
    if err then fn err else fn null, str.toString()
 
app.configure ->
  app.set 'port', process.env.VMC_APP_PORT || 3000
  app.set 'views', "#{__dirname}/../public"
  app.use app.router
  app.set 'view options', layout: false
  app.set 'view engine', 'html'
  app.engine '.html', tmpl
  app.use require('connect').compress()
  app.use express.static("#{__dirname}/../public")

app.get '/', (req,res) ->
  res.render "./html/index.html"

http.createServer(app).listen app.get('port'), ->
  console.log "Listening on #{app.get('port')}"



이런 패턴으로 바뀌었다.
정리해보면

  1. express.createServer() 가 deprecated 되었다. 그냥 express() 사용
  2. 커스텀 템플릿 엔진을 사용하기 위해 register 대신 engine 을 사용
  3. 압축 전송을 위해 gzippo 를 썼는데 connect 버전업과 함께 그냥 connect.compress() 사용
  4. 템플릿 인자가 바뀜. 전엔 해당 파일의 문자값이 넘어왔는데 지금은 path를 반환.
  5. app.get 으로 key, value 형태로 값을 읽어올 수 있음.
자세한 내용은 아래 링크를 참조

댓글

이 블로그의 인기 게시물

세상 간단한 https(+secured websocket): Caddy

nginx, apache2 같은 걸로 매번 certbot 연동을 통해 https 하는게 지겨워서 알아보니 Caddy라는게 있더라. 설치법은 강하게 크기 위해 알아서 해본다. # cat /etc/caddy/Caddyfile your.shitty.site:8123 {   proxy / localhost:9123 {     websocket     transparent   } } 이건 외부에서 8123으로 들어오는 걸 내부적으로 9123로 맞춰서 https 맞춰주는 reverse proxy. 만일 port를 생략하면 # cat /etc/caddy/Caddyfile your.shitty.site {   proxy / localhost:9123 {     websocket     transparent   } } 기본포트인 443으로 되어 https://your.shitty.site 로 접속이 된다. 요새 말썽이던 cloudflare 버리고 netlify domain이랑 caddy를 쓰니까 앓던 이가 빠진 느낌. 이 조합은 당분간 계속 써야겠다 싶다.

저지연 오디오 생성 LLVC 사용기

https://github.com/KoeAI/LLVC 써봄 CUDA 11.8 버전 쓰고 있어 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 VC 없어서 설치 https://wikidocs.net/168848 참조 FAIRSEQ 관련 오류 https://github.com/facebookresearch/fairseq/issues/2908 pip install editdistance  설치 No CUDA runtime is found, using CUDA_HOME='C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8' 오류 멀쩡하게 있는데 안됨. pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118 다시 설치 set DISTUTILS_USE_SDK=1 이게 문젠가 설정하고 재도전 Using cached ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl (118 kB) Building wheels for collected packages: fairseq   Building wheel for fairseq (pyproject.toml) ... error   error: subprocess-exited-with-error   × Building wheel for fairseq (pyproject.toml) did not run successfully.   │ exit code: 1   ╰─> [1829 lines of output]       No CUDA runtime is found, usi...