docker-compose経由でTypeScriptで書いたサーバーサイドのコードが動くように設定している時に躓きました。。。
ルート直下にlibディレクトリを作成し、その中にdb.tsファイルを作りSequelizeのModelを定義しました。 通常の.jsファイルなら
package.json
{
"scripts": {
"node": "node ./lib/db.js"
}
}
でnpm run スクリプト名(node)で実行できますが、.tsファイルの場合は
package.json
{
"scripts": {
"node": "node ./lib/db.ts"
}
}
node --trace-warningsを付与してnpm runしろと怒られてしまいます。TypeScriptのファイルを読み込みたい時はts-codeのパッケージを入れて、
npm i --save-dev ts-node
こんな感じで書いてあげましょう。
package.json
{
"scripts": {
"ts-node": "ts-node --compiler-options {\\\"module\\\":\\\"CommonJS\\\"} ./lib/db.ts"
}
}
npm run ts-node
結局の所、Modelのマイグレーションを走らせたかったので、
docker-compose.yml
version: '3.9'
services:
app:
build:
context: .
command: npm run ts-node
volumes:
- .:/app
links:
- db
ports:
- 3000:3000
environment:
- WATCHPACK_POLLING=true
db:
〜省略〜
こちらのコマンドを書き換えてdocker-compose upし無事立ち上がりました。