TypeScript
クラス内から通常のNodeJSモジュールを(node_modules
から)読み込むにはどうすればよいですか?
次を含む.ts
ファイルをコンパイルしようとすると:
var sampleModule = require('modulename');
使用できないコンパイラプロンプトは、このスコープではrequireです。 (その行はファイルの先頭にあります)。
TypeScriptは、シンボルが見つからない場合は常に文句を言います。コンパイラには、window
、document
などのデフォルト定義のセットが付属しており、lib.d.ts
というファイルで指定されています。このファイルでrequire
に対してgrepを実行すると、関数require
の定義が見つかりません。したがって、declare
構文を使用して、実行時にこの関数が存在することをコンパイラーに伝える必要があります。
declare function require(name:string);
var sampleModule = require('modulename');
私のシステムでは、これで問題なくコンパイルできます。
正しい構文は次のとおりです。
import sampleModule = require('modulename');
または
import * as sampleModule from 'modulename';
次に、--module commonjs
を使用してTypeScriptをコンパイルします。
パッケージにindex.d.ts
ファイルが含まれておらず、package.json
に"typings"
プロパティがない場合、tsc
は'modulename'
が参照するものがわからないことをbarきますに。そのためには、 http://definitelytyped.org/ で.d.ts
ファイルを見つけるか、自分で作成する必要があります。
Node.jsのコードを記述している場合は、 http://definitelytyped.org/ のnode.d.ts
ファイルも必要になります。
最善の解決策は、ノードの型定義のコピーを取得することです。これにより、require()
だけでなく、あらゆる種類の依存関係の問題が解決されます。以前はtypings
のようなパッケージを使用して行われていましたが、Mike Chamberlainが述べたように、Typingsは非推奨です。現代的な方法は次のようにそれをしています:
npm install --save-dev @types/node
コンパイラエラーを修正するだけでなく、Node APIの定義をIDEに追加します。
タイピングを使用して、TypeScriptからノード関数にアクセスします。
typings install env~node --global
入力がない場合は????インストールする:
npm install typings --global