2016-12-21 48 views
4

edge.jsを使用してElectronアプリでウィンドウに印刷するために.NETコードを実行しようとしています。私はelectron-edgeを試みたと私は手動でもinstructions in the Electron docs次電子をターゲットedge.jsモジュールを構築しようとしましたが、私は、パッケージアプリでエッジを使用しようとすると、次のエラーを取得しておいてください。エラー:指定されたモジュールが見つかりませんでした

Error: The specified module could not be found. 
\\?\C:\path\to\app\app-1.0.0\resources\app.asar.unpacked\node_modules\edge\lib\native\win32\x64\6.5.0\edge_nativeclr.node 
    at Error (native) 
    at process.module.(anonymous function) (ELECTRON_ASAR.js:178:20) 
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:178:20) 
    at Object.Module._extensions..node (module.js:583:18) 
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:192:18) 
    at Module.load (module.js:473:32) 
    at tryModuleLoad (module.js:432:12) 
    at Function.Module._load (module.js:424:3) 
    at Module.require (module.js:483:17) 
    at require (internal/module.js:20:19) 

私はファイルシステムをチェックしたところ、実際にはedge_nativeclr.nodeモジュールが存在します。私の疑念は、私は何らかの形でモジュールを正しく構築していないということです。それはおそらく間違ったバージョンのノードをターゲットにしており、電子はモジュールをインポートできません。

私は手動でbuild.batを更新し、ノード-GYP configure build--target=1.4.12 --dist-url=https://atom.io/download/atom-shellフラグを追加するには、electron-edge's stepsを以下を含むいくつかの異なるものを、試してみました。

私も.npmrcで、次のNPMの設定オプションを設定します。

target=1.4.12 
arch=x64 
target_arch=x64 
disturl=https://atom.io/download/electron 
runtime=electron 
build_from_source=true 
msvs_version=2015 

を生成edge_nativeclr.nodeファイルを指すようにEDGE_NATIVE環境変数を設定して確認して、build.batを走ったが、同じ結果を得ました。

+0

ケースが同じであることを確認しましたか? –

+0

@ Mike'Pomax'Kamermans - パスのケース?はい、それはすべて小文字です。 –

答えて

6

私は最終的に数日間、頭を頭に打ちつけた後、これを理解しました。 electron-userland/electron-packager#217electron/electron#892のヒントを得ました。このエラーは、ネイティブモジュールに依存関係がない場合(たとえば、.dll)、Dependency Walkerを使用してチェックすることができます任意の与えられた.nodeモジュールの依存関係

私はedge_nativeclr.nodeをDependency Walkerにロードし、VCRUNTIME140.DLL、Visual Studio 2015 Cランタイムが見つからないことに気付きました。 Edge.jsはmsvcr120.dll、Visual Studioの2013 Cランタイムが付属していますが、私はedge_nativeclr.node、すべてのものと同じディレクトリにvcruntime140.dllのコピーを配置したら、私は2015年

msvs_versionセットとモジュールを再構築してきのです期待どおりに作業を開始しました。

+1

私たちも同様の問題がありました。上記で推奨されているようにDependency Walkerを使用し、電子パッケージャがwin32-x64としてパッケージングしていることを確認しました。これは、64ビットVCRUNTIME140.DLLを探します。正しいdllを取得するには、64ビットのVisual Studio C++ Redistributableをインストールする必要があります。もともと32ビット版がインストールされていました。 – Chadley08

+0

電子アプリをインストールまたはパッケージ化してください。 –

+0

別途インストールしました。あなたの電子アプリに再配布可能なものを含めることができますか? – Chadley08

1

VC++再配布可能なx64が正しくインストールされていても、このエラーが発生しました。私の場合のエラーは、すべてがうまくいった(私は電子エッジで電子クイックスタートアプリを走らせることができたので)実際には問題ではないことが判明しました。

でも、著者はエラーが発生しないようにインストールを修正しました。 https://github.com/kexplo/electron-edge/issues/25#issuecomment-272908409

さらに、Edge_nativeclr.nodeをDependency Walkerに読み込むと、VCRUNTIME140.DLLが正しく解決されていることがわかります(たとえば、自分のPCのC:\ Windows \ System32)。しかし、いくつかの疑問符とエラーが表示されることがあります。これは、Dependency Walkerのいくつかの制限に起因するものであり、実際の問題ではありません。 Dependency Walker: missing dlls

関連する問題