nodejs / electron-forge / node-gyp:尝试我可以在线找到的所有技巧后,找不到要使用的任何Visual Studio安装

问题描述

简介

在咨询了数以百万计的在线提示后,包括

this "comprehensive guide"引入了与官方文档相违背的想法

我仍然无法安装某些需要通过npm或yarn进行本地构建的第三方软件包。我还没有收到来自nodejsnode-gyp github问题论坛的任何回复

我将要发布一款已经在MacOS上使用electron-forge构建良好的应用程序,但无法在Windows上运行它。

主要问题是,用于构建第三方程序包的npm依赖项之一node-gyp在我的计算机上找不到Visual Studio。我使用VS2017社区,并已安装node-gyp的所有必需组件。

我的设置

  • 节点版本node -v = v12.18.3和npm -v = 6.14.8
  • 平台systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"(Windows)
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.18362 N/A Build 18362
System Type:               x64-based PC
  • 编译器msbuild /version & cl(Windows)
Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
copyright (C) Microsoft Corporation. All rights reserved.

15.9.21.664Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27043 for x64
copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]
  • 模块:zeromq

详细输出(来自npm或node-gyp):

me@me-PC0 D:\Desktop\myapp
# node-gyp configure --msvs_version=2017
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.0
gyp info using node@12.18.3 | win32 | x64
gyp info find Python using Python version 3.8.5 found at "C:\Python\python38\python.exe"
gyp ERR! find VS
gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS running in VS Command Prompt,installation path is:
gyp ERR! find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017"
gyp ERR! find VS - will only use this version
gyp ERR! find VS Could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - Could not find MSBuild in registry for this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS msvs_version does not match this VS Command Prompt or the
gyp ERR! find VS installation cannot be used.
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:384:20
gyp ERR! stack     at C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:310:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Apps\\nodejs\\node.exe" "C:\\Users\\me\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure" "--msvs_version=2017"
gyp ERR! cwd D:\Desktop\myapp
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok

我没有用的东西

  • 使用Desktop Development Kit for C++重新安装VS 2017
  • 重新安装节点和npm
  • 在Admin CMD,Admin PowerShell,Admin VC2017 Dev Command Prompt中运行相同的命令
  • 手动将VCINSTALLDIR环境变量设置为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
  • 运行npm config set msvs_version 2017 --global,然后npm config get msvs_version给我2017
  • 重启电脑的每一步

在此过程的每个步骤中,我都遇到与上述相同的错误

进一步尝试

我已经取消了整个nodejs的安装并重新开始,但是问题仍然存在。我所做的

  • 删除基于this StackOverflow answer的nodejs。
  • 使用来自官方nodejs站点的.msi安装程序重新安装了Windows v12.18.3的nodejs x64,从而允许安装程序安装其他依赖项,例如Chocolatey
  • 使用electron-forge创建了一个空白的电子应用程序:
me@me-PC0 D:\Desktop
$ npx create-electron-app myapp
√ Initializing Project Directory
√ Initializing Git Repository
√ Locating custom template: "base"
√ copying Starter Files
√ Initializing NPM Module
√ Installing Template Dependencies
√ Installing NPM Dependencies

me@me-PC0 D:\Desktop
$ cd myapp

me@me-PC0 D:\Desktop\myapp
$ npm start

> myapp@1.0.0 start D:\Desktop\myapp
> electron-forge start

√ Checking your system
√ Locating Application
√ Preparing native dependencies
√ Launching Application

  • npm使用的已配置VS版本:npm config set msvs_version 2017npm config set msvs_version 2017 --global

该应用程序将一直运行到这一点。然后...

  • 已安装依赖项zeromq
$ npm install zeromq --save-prod
npm WARN deprecated request@2.88.2: request has been deprecated,see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\extract-zip.cmd as it wasn't installed by D:\Desktop\myapp\node_modules\extract-zip
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\extract-zip as it wasn't installed by D:\Desktop\myapp\node_modules\extract-zip
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\rimraf.cmd as it wasn't installed by D:\Desktop\myapp\node_modules\rimraf
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\rimraf as it wasn't installed by D:\Desktop\myapp\node_modules\rimraf
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\semver.cmd as it wasn't installed by D:\Desktop\myapp\node_modules\semver
npm WARN rm not removing D:\Desktop\myapp\node_modules\.bin\semver as it wasn't installed by D:\Desktop\myapp\node_modules\semver

> zeromq@6.0.0-beta.6 install D:\Desktop\myapp\node_modules\zeromq
> node-gyp-build


> core-js@3.6.5 postinstall D:\Desktop\myapp\node_modules\core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also,the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: electron-installer-debian@^3.0.0 (node_modules\@electron-forge\maker-deb\node_modules\electron-installer-debian):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for electron-installer-debian@3.1.0: wanted {"os":"darwin,linux","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: electron-installer-redhat@^3.2.0 (node_modules\@electron-forge\maker-rpm\node_modules\electron-installer-redhat):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for electron-installer-redhat@3.2.0: wanted {"os":"darwin,"arch":"x64"})
npm WARN myapp@1.0.0 No repository field.

+ zeromq@6.0.0-beta.6
added 50 packages from 7 contributors,removed 32 packages,updated 401 packages and audited 460 packages in 61.306s

32 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
  • 运行电子伪造来构建Windows发行版。
$ npm run make

> myapp@1.0.0 make D:\Desktop\myapp
> electron-forge make

√ Checking your system
√ Resolving Forge Config
We need to package your application before we can make it
√ Preparing to Package Application for arch: x64
× Preparing native dependencies: 0 / 1

An unhandled error has occurred inside Forge:
Command Failed with a non-zero return code (1):
D:\Desktop\myapp\node_modules\electron-rebuild\node_modules\.bin\node-gyp.cmd rebuild --target=10.1.0 --arch=x64 --dist-url=https://www.electronjs.org/headers --build-from-source

gyp ERR! find VS
gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS VCINSTALLDIR not set,not running in VS Command Prompt
gyp ERR! find VS Could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - Could not find MSBuild in registry for this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS
gyp ERR! find VS valid versions for msvs_version:
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:384:20
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:310:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\Desktop\\myapp\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=10.1.0" "--arch=x64" "--dist-url=https://www.electronjs.org/headers" "--build-from-source"
gyp ERR! cwd C:\Users\me\AppData\Local\Temp\electron-packager\win32-x64\myapp-win32-x64\resources\app\node_modules\zeromq
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok
Error: Command Failed with a non-zero return code (1):
D:\Desktop\myapp\node_modules\electron-rebuild\node_modules\.bin\node-gyp.cmd rebuild --target=10.1.0 --arch=x64 --dist-url=https://www.electronjs.org/headers --build-from-source

gyp ERR! find VS
gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS VCINSTALLDIR not set,not running in VS Command Prompt
gyp ERR! find VS Could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - Could not find MSBuild in registry for this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS
gyp ERR! find VS valid versions for msvs_version:
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:384:20
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:310:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\Desktop\\myapp\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=10.1.0" "--arch=x64" "--dist-url=https://www.electronjs.org/headers" "--build-from-source"
gyp ERR! cwd C:\Users\me\AppData\Local\Temp\electron-packager\win32-x64\myapp-win32-x64\resources\app\node_modules\zeromq
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok
    at ChildProcess.<anonymous> (D:\Desktop\myapp\node_modules\@malept\cross-spawn-promise\src\index.ts:155:16)
    at ChildProcess.emit (events.js:315:20)
    at ChildProcess.EventEmitter.emit (domain.js:483:12)
    at ChildProcess.cp.emit (D:\Desktop\myapp\node_modules\cross-spawn\lib\enoent.js:34:29)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myapp@1.0.0 make: `electron-forge make`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the myapp@1.0.0 make script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\me\AppData\Roaming\npm-cache\_logs\2020-08-28T04_35_43_345Z-debug.log

  • 尝试通过手动设置VCINSTALLDIR环境变量来解决此问题
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
  • 然后再次进行电子伪造
D:\Desktop\myapp>npm run make

> myapp@1.0.0 make D:\Desktop\myapp
> electron-forge make

√ Checking your system
√ Resolving Forge Config
We need to package your application before we can make it
√ Preparing to Package Application for arch: x64
× Preparing native dependencies: 0 / 1

An unhandled error has occurred inside Forge:
Command Failed with a non-zero return code (1):
D:\Desktop\myapp\node_modules\electron-rebuild\node_modules\.bin\node-gyp.cmd rebuild --target=10.1.0 --arch=x64 --dist-url=https://www.electronjs.org/headers --build-from-source

gyp ERR! find VS
gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS running in VS Command Prompt,installation path is:
gyp ERR! find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017"
gyp ERR! find VS - will only use this version
gyp ERR! find VS Could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - Could not find MSBuild in registry for this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS msvs_version does not match this VS Command Prompt or the
gyp ERR! find VS installation cannot be used.
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:384:20
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:310:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\Desktop\\myapp\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=10.1.0" "--arch=x64" "--dist-url=https://www.electronjs.org/headers" "--build-from-source"
gyp ERR! cwd C:\Users\me\AppData\Local\Temp\electron-packager\win32-x64\myapp-win32-x64\resources\app\node_modules\zeromq
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok
Error: Command Failed with a non-zero return code (1):
D:\Desktop\myapp\node_modules\electron-rebuild\node_modules\.bin\node-gyp.cmd rebuild --target=10.1.0 --arch=x64 --dist-url=https://www.electronjs.org/headers --build-from-source

gyp ERR! find VS
gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS running in VS Command Prompt,installation path is:
gyp ERR! find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017"
gyp ERR! find VS - will only use this version
gyp ERR! find VS Could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - Could not find MSBuild in registry for this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS msvs_version does not match this VS Command Prompt or the
gyp ERR! find VS installation cannot be used.
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js:384:20
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at D:\Desktop\myapp\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:310:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\Desktop\\myapp\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=10.1.0" "--arch=x64" "--dist-url=https://www.electronjs.org/headers" "--build-from-source"
gyp ERR! cwd C:\Users\me\AppData\Local\Temp\electron-packager\win32-x64\myapp-win32-x64\resources\app\node_modules\zeromq
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok
    at ChildProcess.<anonymous> (D:\Desktop\myapp\node_modules\@malept\cross-spawn-promise\src\index.ts:155:16)
    at ChildProcess.emit (events.js:315:20)
    at ChildProcess.EventEmitter.emit (domain.js:483:12)
    at ChildProcess.cp.emit (D:\Desktop\myapp\node_modules\cross-spawn\lib\enoent.js:34:29)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myapp@1.0.0 make: `electron-forge make`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the myapp@1.0.0 make script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\me\AppData\Roaming\npm-cache\_logs\2020-08-28T04_40_16_364Z-debug.log

  • 还尝试在D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js处破解node-gyp的visual studio定位器代码,以在行中插入amd64
if (versionYear === 2017) {
        return path.join(info.path,'MSBuild','15.0','Bin','MSBuild.exe')
}
if (versionYear === 2019) {
    return path.join(info.path,'Current','MSBuild.exe')
}

让他们成为

if (versionYear === 2017) {
        return path.join(info.path,'amd64','MSBuild.exe')
}
if (versionYear === 2019) {
        return path.join(info.path,'MSBuild.exe')
}
  • 然后再次运行npm run make。与上一步相同的错误

这是我的构建环境

D:\Desktop\myapp>npm config get msvs_version
2017

D:\Desktop\myapp>npm config get python
C:\Python\python38\pythonw.exe

Python 3.8是python.org的64位版本。

问题

我想念什么?我应该忘记VS2017吗?我的项目使用VS2017进行C ++开发,因此恐怕无法更改。但是我应该安装VS2015吗?

它首先在node-gyp README.md上令人困惑

启动cmd,npm config set msvs_version 2017

然后稍后在How to Use中,它说:

Auto-detection fails for Visual C++ Build Tools 2015,so --msvs_version=2015 needs to be added (not needed when run by npm as configured above):

$ node-gyp configure --msvs_version=2015

此版本差异是什么?

解决方法

尝试使用windows-build-tools npm软件包:https://www.npmjs.com/package/windows-build-tools。这是一个专门设计用于在Windows上为本机构建设置环境的软件包。

您只需要全局安装即可:

npm install --global windows-build-tools

考虑到您现有的所有配置,这不能保证正常工作,但在干净的系统上,仅此一个便足以获得有效的构建环境。如果您仍然遇到问题,他们的Github问题追踪器和README(https://github.com/felixrieseberg/windows-build-tools)会提供很多建议。祝你好运!

,

最后自己弄清楚了。

罪犯

Visual Studio环境变量LIB在我的本地计算机上被污染。那里的某些路径中存在一些非法字符,从而导致node-gyp解析问题。修复了这些字符后,问题就消失了。

此外,我在问题中提到的node-gyp源中的64位修复程序是必要的:

// D:\Desktop\myapp\node_modules\node-gyp\lib\find-visualstudio.js

if (versionYear === 2017) {
    return path.join(info.path,'MSBuild','15.0','Bin','amd64','MSBuild.exe')
}
if (versionYear === 2019) {
    return path.join(info.path,'Current','MSBuild.exe')
}

我怎么找到它

我确实必须使用node-gyp源代码来定位问题。查找Visual Studio安装的方式是通过PowerShell命令调用另一个执行操作系统查询工作的C#脚本Find-VisualStudio.cs

不幸的是,此PowerShell命令的错误日志未反映在即时node-gypnpm日志中。将命令退出并在PowerShell中运行后,瞧! PowerShell命令运行的基础系统日志表明我的LIB变量有问题。

道德课

  • 经验法则:保持Visual Studio环境变量不变。
  • JS /节点生态系统具有复杂的依赖关系。您必须通过进入源代码来了解发生了什么事情,以免动手。
  • 鉴于生态系统的飞速发展,过时的提示实际上可能使您偏离正确的方向,而“过时的”则意味着半年或几个月前。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...