解决node-gyp报错:KeyError 2017

Posted 岬淢箫声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决node-gyp报错:KeyError 2017相关的知识,希望对你有一定的参考价值。

node-gyp因为不兼容Visual Studio 2017,所以报错:KeyError:2017,它的检测代码是node-gyp模块下一个名为
MSVersion.py文件,第434行代码:

def SelectVisualStudioVersion(version='auto', allow_fallback=True):
  """Select which version of Visual Studio projects to generate.

  Arguments:
    version: Hook to allow caller to force a particular version (vs auto).
  Returns:
    An object representing a visual studio project format version.
  """
  # In auto mode, check environment variable for override.
  if version == 'auto':
    version = os.environ.get('GYP_MSVS_VERSION', 'auto')
  version_map = 
    'auto': ('14.0', '12.0', '10.0', '9.0', '8.0', '11.0'),
    '2005': ('8.0',),
    '2005e': ('8.0',),
    '2008': ('9.0',),
    '2008e': ('9.0',),
    '2010': ('10.0',),
    '2010e': ('10.0',),
    '2012': ('11.0',),
    '2012e': ('11.0',),
    '2013': ('12.0',),
    '2013e': ('12.0',),
    '2015': ('14.0',),
  
  override_path = os.environ.get('GYP_MSVS_OVERRIDE_PATH')
  if override_path:
    msvs_version = os.environ.get('GYP_MSVS_VERSION')
    if not msvs_version:
      raise ValueError('GYP_MSVS_OVERRIDE_PATH requires GYP_MSVS_VERSION to be '
                       'set to a particular version (e.g. 2010e).')
    return _CreateVersion(msvs_version, override_path, sdk_based=True)
  version = str(version)
  versions = _DetectVisualStudioVersions(version_map[version], 'e' in version)
  if not versions:
    if not allow_fallback:
      raise ValueError('Could not locate Visual Studio installation.')
    if version == 'auto':
      # Default to 2005 if we couldn't find anything
      return _CreateVersion('2005', None)
    else:
      return _CreateVersion(version, None)
  return versions[0]

从代码逻辑可以看出,它支持两个环境变量:GYP_MSVS_VERSION与GYP_MSVS_OVERRIDE_PATH。
我在执行npm install之前首先运行:

set GYP_MSVS_VERSION=2015
set GYP_MSVS_OVERRIDE_PATH=C:\\Program Files (x86)\\Microsoft Visual Studio 14.0

问题就解决了。
最后提示:请确认当前机器安装了Visual Studio 2015。我的机器同时安装了两个版本。

以上是关于解决node-gyp报错:KeyError 2017的主要内容,如果未能解决你的问题,请参考以下文章

安装bcrypt报错node-gyp rebuild解决方法

widows 10 下解决在npm install python 环境报错的问题

解决“node-gyp command failed“问题

npm install时node-gyp报错

node-gyp 报错-if not defined npm_config_node_gyp

npm 安装模块报node-gyp ERR!