質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

4583閲覧

tsc -watch tsconfig.json コマンドでファイルがあるにも関わらずファイルがないと怒られ実行できない

moimoi_sushi

総合スコア26

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2020/06/13 05:15

編集2020/06/14 04:33

前提・実現したいこと

TypeScriptとFirebaseは簡単にしか使ってことがない初心者です。

firebaseのfunctionsファイルをコンパイルするために tsc -watch tsconfig.json を走らせたいです。
「りあクト! Firebaseで始めるサーバーレスReact開発( https://booth.pm/ja/items/1572683 )」の第2章で最初にコンパイルする項目のところでつまづいています。

該当の作者githubのソースコード(https://github.com/oukayuka/ReactFirebaseBook/tree/master/02-seed/mangarel-demo/functions)

発生している問題・エラーメッセージ

> Executing task: /Users/myname/Documents/Engineering/React/Booth/tsurakunai-firebase/fire/functions/node_modules/.bin/tsc -p /Users/myname/Documents/Engineering/React/Booth/tsurakunai-firebase/fire/functions/tsconfig.json --watch < env: node: No such file or directory The terminal process terminated with exit code: 127

上記のように No such file or directory と表示されます。
Executing task: で表示されているディレクトリ名に関しては tsc は存在しますし、 tsconfig.json のディレクトリも正しいものです。

該当のソースコード

tsconfigJson

1{ 2 "compilerOptions": { 3 "esModuleInterop": true, 4 "lib": ["dom", "esnext"], 5 "module": "commonjs", 6 "moduleResolution": "node", 7 "noImplicitReturns": true, 8 "noUnusedLocals": true, 9 "outDir": "lib", 10 "rootDir": "src", 11 "removeComments": true, 12 "resolveJsonModule": true, 13 "sourceMap": true, 14 "strict": true, 15 "target": "es2017", 16 "types": ["jest", "node"], 17 "typeRoots": ["node_modules/@types", "../node_modules/@types"] 18 }, 19 "compileOnSave": true, 20 "include": ["src"], 21 "exclude": ["node_modules"] 22}

pacakgeJson

1{ 2 "name": "functions", 3 "scripts": { 4 "build": "npm run lint && tsc", 5 "dbreset": "firebase firestore:delete --all-collections", 6 "dbreset:publishers": "firebase firestore:delete -y --shallow publishers", 7 "dbseed": "npm run dbseed:publishers", 8 "dbseed:publishers": "node lib/commands/dbseed.js publishers seeds/publishers.tsv", 9 "lint": "eslint 'src/**/*.{js,ts}'", 10 "lint:fix": "eslint --fix 'src/**/*.{js,ts}'", 11 "logs": "firebase functions:log", 12 "serve": "npm run build && firebase serve --only functions", 13 "shell": "npm run build && firebase functions:shell", 14 "start": "npm run shell", 15 "test": "jest" 16 }, 17 "engines": { 18 "node": "10" 19 }, 20 "main": "lib/index.js", 21 "dependencies": { 22 "commander": "^5.1.0", 23 "csv-parse": "^4.10.1", 24 "firebase": "^7.15.1", 25 "firebase-admin": "^8.10.0", 26 "firebase-functions": "^3.6.1" 27 }, 28 "jest": { 29 "preset": "ts-jest", 30 "testRegex": "(/__tests__/.*|\.(test|spec))\.(ts?|js?)$", 31 "moduleFileExtensions": [ 32 "ts", 33 "json", 34 "js" 35 ] 36 }, 37 "devDependencies": { 38 "@types/eslint": "^7.2.0", 39 "@types/eslint-plugin-prettier": "^3.1.0", 40 "@types/jest": "^26.0.0", 41 "@types/node": "^14.0.13", 42 "@types/prettier": "^2.0.1", 43 "@typescript-eslint/eslint-plugin": "^3.2.0", 44 "@typescript-eslint/parser": "^3.2.0", 45 "eslint": "^7.2.0", 46 "eslint-config-airbnb-base": "^14.2.0", 47 "eslint-config-prettier": "^6.11.0", 48 "eslint-plugin-import": "^2.21.2", 49 "eslint-plugin-jest": "^23.13.2", 50 "eslint-plugin-prefer-arrow": "^1.2.1", 51 "eslint-plugin-prettier": "^3.1.3", 52 "firebase-functions-test": "^0.2.0", 53 "jest": "^26.0.1", 54 "prettier": "^2.0.5", 55 "ts-jest": "^26.1.0", 56 "typescript": "^3.8.0" 57 }, 58 "private": true 59}
src -commands dbseed.ts -firestore-admin record-counter.ts -services --mangarel ---models publisher.ts constants.ts package.json tsconfig.json .eslintrc

試したこと

エラーは VSCode上 の command + shift + B のショートカットから tsc watch -tsconfig.json を実行して表示されます。

npx tsc tsconfig.json で実行してみた場合、
「error TS6054: File 'tsconfig.json' has an unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts'.」
が表示されました。

補足情報(FW/ツールのバージョンなど)

「りあクト! Firebaseで始めるサーバーレスReact開発」の教材を触る中で、ターミナルをzshへ変更し、nodebrewで導入したnodeをクリーンアップしてanyenvを導入しました。(MacOS Catalinaにアプデ 10.15.5)

追記1:
0から構築し直しましたが同様のエラーが表示されました。

追記2:
![イメージ説明
実行したのは上記の cmd + shift + B のショートカットキーで出てくる tsc watch -tsconfig.json となります。

追記3:
自分でpackage.jsonへ "watch": "tsc --watch" を追加して、ターミナルで npm run watch することで src のコンパイル自体はできました。
しかし、ショートカットキーでできなかった理由は不明なままです。回答していただける方を引き続きお待ちしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

tsc -watch tsconfig.jsonというコマンドの意図がよくわからないのですが、tscコマンドの引数として渡すファイルはコンパイル対象のファイル(つまりTypeScriptファイル)ですからjsonファイルをコンパイルしようとすればそれはエラーになります。

投稿2020/06/13 11:46

markey

総合スコア355

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moimoi_sushi

2020/06/14 03:49

ホットリロードを有効化する意図で watch コマンドを tsconfig.json に基づいて実行したいという流れで解説されています。tsconfigをコンパイルしたいという訳ではないようですが...自分にも分からず。 どうしても解決できないため文章を引用させていただきました。 「TypeScript のコンパイルは yarn buid でできるようになってるわけだけど、React アプリのホットリ ロードのように随時コンパイルが走るようにしときたいじゃない?」 「うーん、まあそうですね」 「方法はいくつかあるんだけど、VSCode で tsc のウォッチプロセスを走らせるのが一番手軽でいい と思う。functions/ をポイントにして開いたVSCodeのウィンドウでCommand+Shift+Bを押して みて」 「『Select the build task to run』って選択肢が三つ表示されました」 「その中の『tsc: Watch -tsconfig.json』ってのを選択してみて」 「お、VSCode の下ペインにターミナルが開いて何か表示されましたね」 「tsc のウォッチタスクが稼働したの。『Found 0 errors. Watching for file changes.』ってあるから、エ ラーなくコンパイルができたみたいね。functions/lib/ ディレクトリの中を見てみて」 「これはコンパイルされた JavaScript ファイルですか?」 「そう。tsconfig.json のコンパイラオプション outDir が"lib"に設定されてるからここに出力されるの ね。さっきの dbseed.ts はこの中の commands/dbseed.js として出力されてる。じゃこれを実行してみよ うか」 上記の解説となっています。 また実際にどうやって実行したのかわかるように画像も追記しました。
markey

2020/06/14 06:25

ありがとうございます。推測ですがおそらくVSCode上で現在開いているファイルにもとづいて候補が表示されているのではないでしょうか。キャプチャ画像ではtsconfig.jsonを開いた状態でCommand+Shift+Bを押しているように見えます。例えばindex.tsを開いている状態で行うと「tsc: watch - index.ts」となるのではないかと。Watchモードであろうとなかろうと、tscコマンドの引数として渡すものはコンパイル対象のファイルですからtsconfig.jsonを渡すのはおかしいと思います。
moimoi_sushi

2020/06/16 02:23

ありがとうございます。その通りだと思います、いずれにしてもテキストにははっきりとtsconfig.jsonで実行するよう書いていました。 これ以上、回答をいただくことは難しそうなのでここで閉じたいと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問