2017-12-08 18 views
0

サーバー側で実行するクラウド機能のサブディレクトリfunctionsを持つVueJSプロジェクトでTypescriptを使用しようとしています。クラウド機能を持つES7の "インクルード"機能を無効にできません

私は、ES2017の機能にArray.prototype.includesを使用したいと私はそれが私の機能ディレクトリに次のtsconfig.jsonを追加することで実現させたのだと思った:

{ 
    "compilerOptions": { 
    "lib": ["es2016", "es2017"], 
    "target": "es6", 
    "module": "es2015", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "strict": true 
    } 
} 

た場合、私はファンクションディレクトリに移動し、エラーなしで実行するtscトランスペアラを実行します。また、私のvs-code editorは、 "includes"の使用に関する問題を強調しません。しかし、私は私のfirebase.json設定ファイルに以下を追加しているFirebaseドキュメントに提案した構成とともに、次のターンで

"functions": { 
    "predeploy": "npm --prefix functions run build" 
} 

機能ディレクトリ内の私のpackage.jsonが記載されているようビルドスクリプトがあります。

"scripts": { 
    "build": "tslint *.ts && tsc *.ts" 
}, 

しかし、私はfirebase deploy --only functionsを実行すると、それは正しくビルドスクリプトを実行しますが、それは次のエラーを与える:

index.ts(44,31): error TS2339: Property 'includes' does not exist on type 'string[]'.

私はそれが間違ってルートプロジェクトディレクトリ内 tsconfig.jsonを使用しているため、これが起こってすることができると信じて(別名、VueJSが使用している1)の代わりに 機能ディレクトリ内の1つの私はありませんよ完全に確かです。

私はにビルドコマンドを変更することでこの問題を回避することができます

"build": "tslint *.ts && tsc *.ts --lib 'es7'" 

、これが作業を行いますが、それは私がそれを少しハッキングしてきた感じを私に残します。誰かがより良い答えを指すことができますか?

答えて

2

tscに入力ファイルを指定すると、tsc *.tsを使用すると、tsconfig.jsonファイルは無視されるためです。 documentationから

When input files are specified on the command line, tsconfig.json files are ignored.

は、パラメーターを指定せずにこの実行tscを修正します。これにより、ファイルtsconfig.jsonが使用されます。

関連する問題