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
し無事立ち上がりました。