概要
Azure FunctionsのTypescriptでもエイリアス使いたい。
結論から言うと、tsc-aliasを追加で導入する必要があった。
ソースコード
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"outDir": "dist",
"rootDir": ".",
"sourceMap": true,
"strict": false,
+ "paths": {
+ "@/*": ["./src/*"]
+ }
}
}
エラー
tscしただけでは、下記のようなエラーが発生する。パスの解決に失敗している。
Error: Worker was unable to load entry point "dist/src/functions/credentials.js": Cannot find module '@/lib/azure-storage.js'
対応
stack over flowで似たようなことをしている人がいた。
tsc-aliasを使う方法の模様。同様なことを実現するのに、tsconfig-pathsもあるようだが、tsc-aliasのほうがシンプルそうなのでこちらを試す。
修正
api/package.json
{
"scripts": {
- "build": "tsc",
+ "build": "tsc && tsc-alias",
// 略
},
"devDependencies": {
"@redocly/cli": "^1.12.0",
"@types/node": "^20.x",
"rimraf": "^5.0.5",
+ "tsc-alias": "^1.8.8",
"typescript": "^5.4.5"
},
"main": "dist/src/functions/*.js"
}
結果
実行したところ、エラーなく実行されることを確認できた。
参考
stack over flow - node-js-typescript-azure-function-cannot-import-with-absolute-path-minimal-re
stack over flow - how-can-i-use-a-custom-path-for-azure-function-app-functions
Nxモノレポ上でAzure Functionsをビルド・デプロイできるようにするメモ
issues - "@azure/functions-core" can't be resolved by bundlers