NodeRT:无法找到程序集

时间:2017-02-10 10:51:33

标签: node.js windows-runtime windows-10 electron

我正在撰写一个electron应用electron-windows-notifications,该应用依赖于NodeRT

当我尝试安装我的项目时,每个> if not defined npm_config_node_gyp (node "C:\Applications\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild --msvs_version=2015 ) else (node "" rebuild --msvs_version=2015 ) Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. _nodert_generated.cpp NodeRtUtils.cpp OpaqueWrapper.cpp CollectionsConverterUtils.cpp ..\_nodert_generated.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [C:\Users\moro\projects\t w-en-ty\node_modules\@nodert-win10\windows.ui.startscreen\build\binding.vcxproj] ..\NodeRtUtils.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [C:\Users\moro\projects\tw-en-t y\node_modules\@nodert-win10\windows.ui.startscreen\build\binding.vcxproj] ..\CollectionsConverterUtils.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [C:\Users\moro\pr ojects\tw-en-ty\node_modules\@nodert-win10\windows.ui.startscreen\build\binding.vcxproj] win_delay_load_hook.cc ..\OpaqueWrapper.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [C:\Users\moro\projects\tw-en -ty\node_modules\@nodert-win10\windows.ui.startscreen\build\binding.vcxproj] C:\Applications\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by se tting the LIBPATH environment variable [C:\Users\moro\projects\tw-en-ty\node_modules\@nodert-win10\windows.ui.startscreen\build\binding.vcxproj] gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Applications\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23) gyp ERR! stack at emitTwo (events.js:106:13) gyp ERR! stack at ChildProcess.emit (events.js:191:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12) gyp ERR! System Windows_NT 10.0.14393 gyp ERR! command "C:\\Applications\\nodejs\\node.exe" "C:\\Applications\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--msvs_version=2015" gyp ERR! cwd C:\Users\moro\projects\tw-en-ty\node_modules\@nodert-win10\windows.ui.startscreen gyp ERR! node -v v6.9.5 gyp ERR! node-gyp -v v3.4.0 gyp ERR! not ok 依赖项都会出现以下错误:

{{1}}

拜托,你能帮助我吗?

此问题也在此处提出:https://github.com/NodeRT/NodeRT/issues/56

6 个答案:

答案 0 :(得分:2)

在另一台计算机上尝试完整安装过程后,我发现了导致此问题的问题。在安装说明中,声明需要“VS 2015 Express for Windows Desktop”。但是,Visual Studio本身还不够,安装人员时也必须安装 Windows 10 SDK

回顾一下,这似乎是显而易见的,但对于JS-native相关技术的新手来说,在README中明确声明这一点可能很有用。 :)

答案 1 :(得分:2)

对于处理此问题的任何其他人。我通过复制Windows.winmd

来修复它

  

C:\ Program Files(x86)\ Windows Kits \ 10 \ UnionMetadata \ 10.0.16299.0

  

C:\ Program Files(x86)\ Windows Kits \ 10 \ UnionMetadata

答案 2 :(得分:2)

您需要将Windows 10 SDK的安装与所需版本的NodeRT完全匹配。

按照这里的一些答案的建议,我在几个令人沮丧的小时内安装了Windows 10 SDK和Visual Studio 2015的各种版本。

最后,经过一番研究并浏览了NodeRT官方页面:

https://github.com/NodeRT/NodeRT

我看到它确切列出了每个版本的nodert所需的Windows 10 SDK。

仔细查看我的确切错误消息,我发现它在抱怨nodert-win10-cu,因此根据上一页,我需要完全安装SDK Windows 10,Build15063。这样做之后,它像魅力,但仅适用于该确切的SDK版本。某种程度上,我安装了所有SDK,但我没有安装确切的一个:)。

我希望这对其他答案没有用的人有所帮助。它们可以使您接近,但是细节很重要-使用上面的链接将Windows 10 SDK的安装与所需版本的NodeRT完全匹配。

答案 3 :(得分:0)

我也遇到以下错误:

d:\nodejs\app\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assemb
ly search path using /AI or by setting the LIBPATH environment variable [D:\nodejs\work\app\node_modules\@nodert-win10-cu\windows.applicationmodel\b
uild\binding.vcxproj]
d:\nodejs\work\app\node_modules\@nodert-win10-cu\windows.applicationmodel\opaquewrapper.cpp : fatal error C1107: could not find assembly 'Windows.wi
nmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [D:\nodejs\work\app\node_modules\@nodert-win1
0-cu\windows.applicationmodel\build\binding.vcxproj]
d:\nodejs\work\app\node_modules\@nodert-win10-cu\windows.applicationmodel\nodertutils.cpp : fatal error C1107: could not find assembly 'Windows.winm
d': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [D:\nodejs\work\app\node_modules\@nodert-win10-
cu\windows.applicationmodel\build\binding.vcxproj]
d:\nodejs\work\app\node_modules\@nodert-win10-cu\windows.applicationmodel\_nodert_generated.cpp : fatal error C1107: could not find assembly 'Window
s.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [D:\nodejs\work\app\node_modules\@nodert-
win10-cu\windows.applicationmodel\build\binding.vcxproj]
d:\nodejs\work\app\node_modules\@nodert-win10-cu\windows.applicationmodel\collectionsconverterutils.cpp : fatal error C1107: could not find assembly
 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable [D:\nodejs\work\app\node_modules\
@nodert-win10-cu\windows.applicationmodel\build\binding.vcxproj]

我遵循以下步骤:

  1. 创建一个文件夹(检查building.gyp文件的路径)

    %ProgramFiles(x86)%/ Microsoft Visual Studio     14.0 / VC / lib / store / references

  2. 复制文件platform.winmd

    C:\ Program Files(x86)\ Microsoft Visual     Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x86 \ store \ references

  3. 复制文件Windows.winmd

    C:\ Program Files(x86)\ Windows     套件\ 10 \ UnionMetadata \ 10.0.17763.0

帮我解决了“ platform.winmd”,“ Windows.winmd”错误!

答案 4 :(得分:0)

这是我为使Electron使windows.devices.geolocation的整个过程正常工作所做的事情。

  1. 与Microsoft网站分开安装带有构建工具和平台SDK的Visual Studio 2017。我安装了Windows 10平台SDK版本17134。
  2. 获取NodeRT(3.0)的最新资源,并使用Visual Studio 2017进行构建。
  3. 运行已构建的应用程序。我使用了NodeRTUI.exe文件,也可以使用命令行版本。
  4. 将Winmd文件位置指向平台SDK的安装文件夹。对我而言,它位于C:\ Program Files(x86)\ Windows Kits \ 10 \ UnionMetadata \ 10.0.17134.0 \
  5. 选择Windows.Devices.Geolocation或所需的任何RT模块
  6. 选择Visual Studio 2017,Windows 10和输出文件夹的位置。
  7. 单击“生成并生成模块”,不要担心是否收到错误消息。
  8. 导航到生成输出文件的输出文件夹
  9. 运行node-gyp rebuild --msvs_version=2017
  10. 如果由于找不到platform.winmd文件而导致构建失败,请执行以下操作。
  11. 在您的ProgramFiles(x86)中搜索platform.winmd文件。这应该已经在Visual Studio安装中安装了
  12. 从您的NodeRT生成的输出项目中打开binding.gyp文件,找到WIN_VER ==“ \ v10 \”“的路径,然后将platform.winmd文件复制到该位置,然后将plaftform.winmd文件复制到该位置。对我来说是%ProgramFiles(x86)%/Microsoft Visual Studio 14.0/VC/lib/store/references
  13. 现在,该版本应该可以正常工作了。从输出文件夹运行test.js文件,以确保一切正常。

  14. 要在Electron中使用此节点插件,需要对其进行重建以匹配您正在使用的Electron的确切版本。 (否则,电子应用程序将冻结)

  15. 将整个输出文件夹复制到您的Electron应用程序文件夹中。 MyApp\windows.devices.geolocation\等,并将具有此依赖项的顶级package.json文件修改为"windows.devices.geolocation": "file:windows.devices.geolocation"

  16. 使用MyApp\node_modules/.bin/electron --version为我检查您的电子版本为4.0.1

  17. 运行以下命令以重建NodeRT模块以在电子环境中工作 node-gyp rebuild --target=4.0.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell

  18. 现在在MyApp文件夹中运行npm install,您的NodeRT已准备就绪。

答案 5 :(得分:0)

在这里补充一下,除了安装 C++ 工具之外,最终对我有用的是使用 -rs3 版本,而不仅仅是 nodert-win10

npm install @nodert-win10-rs3/windows.media