Definitelytyped: webpack-env.d.tsはnode.d.tsでコンパイルされません

作成日 2016年02月09日  ·  6コメント  ·  ソース: DefinitelyTyped/DefinitelyTyped

あなたが尋ねる前に:はい、私は検索しました-そして#6334-を見つけました-これは私の問題に対処していませんが。

Webpackを使用するWebアプリケーションを作成しています。 その結果、フロントエンドでwebpack-env.d.tsにアクセスする必要がありますが、ノードからurlモジュールを使用することにも興味があります( url.parse )。 同じ参照ファイルにwebpack-env.d.tsnode.d.tsが必要な場合、ノードがrequire再定義するため、予想どおりに壊れます。 IOW、 node.d.tsurlモジュールとwebpackのrequire定義にアクセスする必要があります。

const url: any = require('url')を使用してこれを回避できますが、これは理想的ではなく、このモジュールの入力が必要です。 別のオプションは、 node.d.tsをその構成モジュールに分割し、マスターnode.d.ts個々のモジュールを要求させることですが、これがこれに依存する多くの人々から何かを壊すかどうかはわかりませんTypeScript宣言ファイル-そして私は特にそれをローカルで一緒にハックしたくありません。

助言がありますか?

最も参考になるコメント

しかし、 @types/nodeが別の依存関係の依存関係である場合fs-extrajsdomshelljstape )?
また、 webpack-env

if ((module as any).hot) {
...

😢

全てのコメント6件

まあ、技術的にはまだノード環境にいないので、node.d.tsファイル全体を含めるのは正しくありません。 ノードの「url」と同じように機能するnpmパッケージを使用していますが、ブラウザー環境で使用しています。 あなたができることは、あなたがすでに提案したように、node.d.tsからそれらのタイプを抽出し、別々のurl.d.tsを持つことです。 node.d.tsを小さなモジュールに分割するだけでは、すべてのニーズに対応できるとは限りません。環境の違い(バッファーと配列)または実装によって署名が異なる場合があるためです。 この「url」パッケージを個別に入力することをお勧めします。

tsconfig.jsontypings/index.tsを使用して、すべての入力を含めるという同じ問題が発生しました。 webpack-env.d.tsnode両方を追加すると、typescriptコンパイラは明らかに文句を言います。 これを回避する方法はありますか?

test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

私が「解決」した方法は、使用したいノード固有のモジュール用に個別のタイピングファイルを作成することでした。 残念ながら、ちょっとしたハックです。

プロジェクト全体で1回入力するだけでよいため、webpack-envを完全に削除することになりました。 うまくいけば、それはそのようにとどまります。 私はあなたの解決策を試しましたが、参照でファイルを汚染することは本当に好きではありません。 返信いただきありがとうございます

Saurabh Sharma /品質工学
[email protected] /(925)-878-5722
Yammer、Microsoft
http://www.foklepoint.com

2016年8月14日には、7:08で、ダンの[email protected]書きました:

私が「解決」した方法は、使用したいノード固有のモジュール用に個別のタイピングファイルを作成することでした。 残念ながら、ちょっとしたハックです。


あなたがコメントしたのであなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

確かに、私もそうではありません:(しかし、悲しいことに、私はそのモジュールが必要でした。 @ foklepoint

しかし、 @types/nodeが別の依存関係の依存関係である場合fs-extrajsdomshelljstape )?
また、 webpack-env

if ((module as any).hot) {
...

😢

このページは役に立ちましたか?
0 / 5 - 0 評価