問題タブ [contextify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8130 参照

javascript - Node.js jsdom エラー

私はjsdomを機能させようとしています:)

コードは次のとおりです。

そして、ここにエラーがあります:

ページがフェッチされているかどうか、およびjquery libが解析されているかどうかを確認しました-それらは解析されています。

jsdom.js の実装を見ることができます。

.createWindow() が成功していないようです...

Cloud9で実行しています。

どんな助けでも大歓迎です。

0 投票する
1 に答える
71 参照

macos - Macで実行すると割り当てが失敗する

PCとLinuxで正常に実行されるnode.jsプロジェクトがありますが、Mac(Mountain Lion)で実行すると、jQueryモジュールが機能しません。ウィンドウオブジェクトのプロパティへの割り当てはすべて無視されます。

あれは

例外をスローします。それを解決するためのアイデアはありがたいです

オブジェクトのプロトタイプは、undefinedこれら2つのことが関連していることを期待しています。ウィンドウオブジェクトは、jsdom.createWindow()を使用して作成されます(これにより、doc.parentWindowが返されます)。

下の行が原因のようです

これは実際のオブジェクトを返します(プロトタイプなし)。

0 投票する
1 に答える
2645 参照

jquery - node.js:jsdomの問題-jQueryオブジェクトは未定義を返します

プロジェクトの1つでサーバー側のDOM操作を行うことに興味があるので、node.js、特にjsdomを調べることにしました。私はnode.jsにまったく慣れていないので、おそらく私の間違いは明らかですが、それでもなお、私の問題の解決策をどこにも見つけることができませんでした...

まず、Windowsでノードをローカルで実行しており、オンラインIDEcloud9も使用しています

必要な依存関係のcontextifyがWindowsではコンパイルされないため(0.2.15)、ノードの最新のjsdomパッケージ(0.2.15)のインストールで問題が発生したため、言及する価値がありました(C ++とPythonが必要であり、npmはC ++パッケージのビルドをサポートしていないことがわかりました) 。だから私は2つの代替アプローチを取りました:

  1. contextifyに依存しない古いバージョン、つまりjsdom@0.2.1をインストールしました。これが私が現在持っているもののnpmリストです

    jsdom github repo cloud9から取得した簡単なテストスクリプトを実行しようとすると、この警告が返されました

    sysのすべての言及をutilに置き換えてこれを修正しようとしましたが、エラーが消えました...(それでも正しいことかどうかはわかりませんが...)。そして最後に、このスニペットを実行しようとしたとき

    私はそれを見つけましたwindow.$ === undefined。cloud9上のノードv0.6.xとノードv0.4.x、およびローカルのノードv0.8.7で実行しようとしました。

  2. 私がやろうとしたもう1つのことは、最新のjsdom@0.2.15をインストールし、ここからコンパイルされたcontextifyを取得し、バインディングをインストールして、 contextifyがそれに依存しているのでcontextify/node_modulesに追加することでした。私はそれをまったく機能させることができませんでした=(これは誤ったアプローチのようであり、contextifyが最新ではないため、多くの時間を無駄にしませんでした。

    これがnpmリストです

    /li>

また、これが私のcloud9ワークスペースです。恥ずかしがらずに遊んでください。

助けていただければ幸いです。たぶん、私が望んでいたことを達成するために他にもっと良いものがあります。

ありがとう。

0 投票する
1 に答える
3931 参照

javascript - Windows 7 に contextify をインストールするエラー: `gyp` が終了コードで失敗しました: 2

これは私が走ったときに得たものですnpm install contextify

node x64 v0.8.16 と node-gyp v0.8.1 があります

Python 2.7.3、.Net Framework 4、Microsoft Visual Studio C++ 2010 Express、Windows 7 64 ビット SDK、および Microsoft Visual C++ 2010 Service Pack 1 コンパイラがありました。

私はすでにPCを再起動しました。私は何を取りこぼしたか?

0 投票する
1 に答える
304 参照

node.js - Azure 上の JSDom (ネイティブ Node.js モジュール)

ネイティブ モジュールContextifyに依存しているため、JSDom に依存する nodejs アプリを Azure で動作させるのに問題があります。Azureはネイティブ モジュールのコンパイルを提供していないことを理解しています。

ただし、Azureのドキュメントによると

Windows Azure クラウド サービスは、アプリケーションの一部として展開される node_modules フォルダーに依存しているため、インストールされたモジュールの一部として含まれるネイティブ モジュールは、Windows 開発システムにインストールおよびコンパイルされている限り、クラウド サービスで動作するはずです。

npm のインストール中にコンパイルされるため、開発ボックスではすべて正常に動作しますが、コンパイルされたバージョンを提供しているときに Azure で動作しない理由がわかりません。Windows dev ボックスで動作する場合、コンパイルは明らかに成功しています。ローカル git リポジトリから azure フォームにデプロイするので、コミット時にコンパイル済みファイルが除外されているのではないかと考えています。

0 投票する
1 に答える
1153 参照

node.js - setTimeout でスケジュールされた Node.js ファイバーとコードがクラッシュする

いくつかの同期コードの実行を一時停止して、node.js のイベント ループに制御を渡す方法に関する問題を解決するためにファイバーを使用しています。これはほとんどうまくいきますが、奇妙なクラッシュに遭遇しましたが、その理由を見つけることができません。

設定

次の 3 つのプロセスがあります。

  • メインのサーバー プロセスであり、計測および実行するコードを受け取ります。実行する新しいコードを受け取ったら、child_process.fork() を使用して生成します
  • 実行プロセス。これは、実行されたコードで何が起こったかを報告するために、特定のコールバックを時々呼び出すように受信コードをインストルメント化します。次に、 Contextifyを使用して作成されたサンドボックスでコードを実行します。これらのレポートには、コード内の行と列に関する誤った位置情報が含まれていることがあります。その場合、インストルメント化されたコード内の場所を元のコード内の場所にマップするためのソース マップが必要です。ただし、このソース マップの計算にはかなりの時間がかかります。したがって、実行を開始する前に、実行プロセスが生成されます
  • ソース マップの計算プロセス。これは、元のコードとインストルメント化されたコードを取り、ソース マップを計算するだけです。完了すると、完成したソース マップを実行プロセスに送信して終了します。

実行プロセスが、実行が完了する前にコールバックでソース マップを必要とする場合、Fiber.yield() を使用して制御をイベント ループに渡し、実行を一時停止します。実行プロセスがデータを受け取ると、pausedFiber.run() を使用して実行を続行します。

これは次のように実装されます。

要約すると、新しいコードを受け取ると、それを実行するための新しいプロセスが作成されます。このプロセスは、最初に計測してから実行します。その前に、コードのソース マップを計算する 3 番目のプロセスを開始します。インストルメント化されたコードは、次の名前の関数を呼び出しますcallback上記のコードで、実行中のコードの進行状況を報告するメッセージをランタイムに渡します。これらは時々調整する必要があります。調整が必要な例の 1 つは、「コンソール ログ」メッセージです。この調整を行うには、3 番目のプロセスで計算されたソース マップが必要です。コールバックがソース マップを必要とする場合、getSourceMap() を呼び出します。これは、sourceMap プロセスが計算を終了するのを待機し、その待機時間中にイベント ループに制御を渡し、sourceMap プロセスからメッセージを受信できるようにします (それ以外の場合、イベント ループはブロックされ、メッセージを受信できませんでした)。

コールバックに渡されたメッセージは、最初に配列に格納されてから、パフォーマンス上の理由からメイン プロセスにバッチとして送信されます。ただし、メイン プロセスがメッセージを長時間待機することは望ましくないため、しきい値に達したときにメッセージのバッチを送信することに加えてsendMessagesWithEventLoopTurnAround()、イベント ループで実行する関数をスケジュールし、送信するメッセージがあるかどうかを確認します。これには 2 つの利点があります。

  1. 実行プロセスがソース マップ プロセスを待機している場合、その時間を使用して、既に取得したメッセージを送信できます。そのため、sourceMap プロセスが終了するまでに数秒かかる場合、メイン プロセスは、作成済みで正しいデータを含むメッセージを同じ時間待機する必要はありません。
  2. 実行中のコードがイベント ループでごくわずかなメッセージしか生成しない場合 (たとえば、setTimeInterval(f, 2000)実行ごとに 1 つのメッセージのみを作成するようにスケジュールされた関数によって)、メッセージ バッファーがいっぱいになるまで長時間 (この例では 200 秒) 待機する必要はありません。ただし、10ms ごとに進行状況に関する更新を受信します (何かが変更された場合)。

問題

機能するもの

このセットアップは、次の場合にうまく機能します

  1. ソース マップを計算するために、ファイバーや別のプロセスは使用しません。代わりに、コードが実行される前にソース マップを計算します。その場合、実行しようとしたすべてのコードが期待どおりに機能します。
  2. 私はファイバーと別のプロセスを使用し、ソース マップを必要としないコードを実行します。たとえば var a = 2;
    、または
    setTimeout(function () { var a = 2;}, 10)

最初のケースでは、出力は次のようになります。

  1. ファイバーと、ソースマップが必要な別のプロセスとコードを使用しますが、イベントループは使用しません。 console.log("foo");

その場合、出力は次のようになります。

  1. 私はファイバーと、ソース マップが必要でイベント ループを使用する別のプロセスとコードを使用しますが、ソース マップは、ソース マップの計算が既に完了している場合にのみ必要です (つまり、待機はありません)。

例えば

その場合、出力は次のようになります。

うまくいかないこと

ファイバーを使用し、イベントループを使用するプロセスとコードを分離した場合にのみ壊れますが、終了する前にソースマップが必要です。

出力は次のようになります。

ここでクラッシュするプロセスが実行プロセスです。しかし、なぜそれが起こるのか、問題を追跡する方法がわかりません。上記でわかるように、何が起こっているのかを調べるために、いくつかのログ ステートメントを既に追加しています。実行プロセスで「キャッチされていない例外」イベントも聞いていますが、それは発生していないようです。

また、最後に表示されるログ メッセージは私のものではありません。ログ メッセージの前に何らかの説明文字列を付けているため、node.js 自体によって作成されたものです。なぜこれが発生するのか、どの終了コード 8 なのか、あるいは原因を絞り込むために他に何ができるのかさえわかりません。どんな助けでも大歓迎です。

0 投票する
3 に答える
19944 参照

node.js - contextify のインストール中にエラーが発生しました - node-gyp の再構築に失敗しました

編集

ノードをアップグレードし、「npm install -g contextify」を実行しました。正常にインストールされたように見えますが (エラーはありません)、「which contextify」と入力しても何も返されません。contextify のインストール中のメッセージ:

オリジナル

npm での contextify のインストールに問題があります。

次のエラー メッセージが表示されます。

ここで何が起こっているか知っている人はいますか?私の PYTHON PATH と何か関係があるかもしれないと読みましたが、どのように見えるべきかわかりません。

助けてくれてありがとう。

0 投票する
3 に答える
17773 参照

windows - node-gyp を Windows 7 プラットフォームで動作させるにはどうすればよいですか

Windows 7 + Node.js プラットフォームで node-gyp を使用しようとすると、標準の "Hello World" の例 [2] をコンパイルしようとして失敗しました [3]。注: node-gyp は、"-g" を使用してnpm install contextifyまたは使用せずに試行すると、同様の方法 [3] で失敗するため、これらは関連する問題である可能性があります。

構成:

  • ノード-gyp 0.12.2
  • Windows 7 x64 SP1
  • パイソン 2.7
  • Node.js 0.10.24
  • [1]あたりのVisual Studio 2010(2012も試しました)
  • [1] による VS SDK 7.1 (32 ビット版と 64 ビット版を試した)
  • 標準の Windows コマンド プロンプトまたは SDK7.1 コマンド プロンプトから node-gyp を実行する

参照:
[1] https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

[2] https://github.com/joyent/node/tree/master/test/addons/hello-world

[3] 「hello world」[2] プロジェクトで「node-gyp rebuild」を実行すると、次の 2 つのエラーが発生します。

....node-gyp\0.10.24\deps\uv\include\win.h(8738): エラー C2371: 'SYSTEM_POWER_STATUS': 再定義; さまざまな基本タイプ [...\build\test.vcxproj]

....node-gyp\0.10.24\deps\uv\include\mswsock.h(27): 致命的なエラー C 1083: インクルード ファイルを開けません: '_mingw.h': そのようなファイルまたはディレクトリはありません [... \build\test.vcxproj]

および次の 2 つの警告:

....node-gyp\0.10.24\deps\uv\include\win.h(13513): 警告 C4005: 'UNALIGNED': マクロの再定義 [...\build\test.vcxproj]

....node-gyp\0.10.24\deps\uv\include\mswsock.h(26): 警告 C4068: 不明なプラグマ [...\build\test.vcxproj]

完全なトレースは次のとおりです。

0 投票する
1 に答える
662 参照

node.js - contextify のビルドがエラーで失敗する: フィールド 'time' has incomplete type

背景:jquery JavaScript コード (jQuery オブジェクトを使用) をテストするために使用していnodeunitます。jqueryの場合、オブジェクトjsdomを提供する必要がありwindowます。contextify64 ビット Debian ではビルドされないが必要なため、jsdom のビルドは失敗します。標準のUbuntuとDebianエディションの両方のLinux Mintでテストしましたが、同じ結果でした。

問題: node.js はどちらの場合も 0.11.11 リリースであり、git リポジトリからビルドされています。time、 、it_interval、およびその他多くのものを構築するときは不完全です。なんで?

完全なビルド ログはここにあります: http://pastebin.com/iTq75435次で始まります:

0 投票する
3 に答える
7506 参照

node.js - NodeJS contextify パッケージをインストールするとエラーが発生する

私は NodeJS を 1 時間使用しているので、しばらくお待ちください。私のプロジェクトに必要なパッケージの 1 つに JSDom があります。インターネットの多くを調べた結果、JSDOm には contextify という依存関係があることがわかりました。contextify は、何らかの方法で JSDom インストール自体の中で処理されます。だからこれは私がすることです:

次の結果が得られるまで、すべてがうまくいきます。

困惑!!!

contextify を Ubuntu で実行するには、make、python、および G++ が必要であることがわかりました。私はそれらすべてを持っています。それで、私はここで何を逃していますか?

参考までに、JSDOM のインストール試行前のコマンドは次のとおりです。

また、次のことを試しました。

2 番目のコマンドで、同じ問題が発生します。