美文网首页
win10+x64+vs2015安装nodejieba记录

win10+x64+vs2015安装nodejieba记录

作者: taiyosen | 来源:发表于2020-10-15 17:29 被阅读0次

    今天使用npm安装nodejieba,遇到不少问题,在此记录一下。
    安装前环境:

    win10
    x64
    node v10.14.2
    vs2015+vs2017
    python 3.8.0

    由于使用npm安装nodejieba必须进行编译,于是有了以下这些问题:

    python版本问题

    gyp ERR! stack Error: Command failed: C:\Users\fygame\AppData\Local\Programs\Python\Python38\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
    gyp ERR! stack   File "<string>", line 1
    gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
    gyp ERR! stack                                ^
    gyp ERR! stack SyntaxError: invalid syntax
    

    从以上出错信息可以得知,import sys; print "%s.%s.%s" % sys.version_info[:3];是python2的语法,由于我安装的是python 3.8,所以提示语法错误。

    解决方案

    安装python2,我安装的是python 2.7。不用担心,python2和python3可以同时兼容安装的。安装后请确保将python2的安装目录添加到环境变量Path中(确保python2的路径在python3之前,这样优先使用python2)。
    顺带附一下如何指定python2/3:

    C:\Users\fygame>py -2
    Python 2.7 (r27:82525, Jul  4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    
    C:\Users\fygame>py -3
    Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    

    VS程序集问题

    F:\tgit\jiebatest>npm i nodejieba --msvs_version=2015
    
    > nodejieba@2.4.1 install F:\tgit\jiebatest\node_modules\nodejieba
    > node-pre-gyp install --fallback-to-build
    
    node-pre-gyp WARN Using needle for node-pre-gyp https download
    node-pre-gyp WARN Tried to download(404): https://github.com/yanyiwu/nodejieba/releases/download/2.4.1/nodejieba-v2.4.1-node-v64-win32-x64.tar.gz
    node-pre-gyp WARN Pre-built binaries not found for nodejieba@2.4.1 and node@10.14.2 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)
    在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
    F:\tgit\jiebatest\node_modules\nodejieba\build\nodejieba.vcxproj(20,3): error MSB4019: 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v
    4.0\V110\Microsoft.Cpp.Default.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。
    gyp ERR! build error
    gyp ERR! stack Error: `msbuild` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
    gyp ERR! System Windows_NT 10.0.19041
    gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--module=F:\\tgit\\jiebatest\\node_modules\\nodejieba\\build\\Release\\nodejieba.node" "--module_name=nodejieba" "--module_path=F:\\tgit\\jiebatest\\node_modules\\nodejieba\\build\\Release" "--napi_version=3" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v64"
    gyp ERR! cwd F:\tgit\jiebatest\node_modules\nodejieba
    gyp ERR! node -v v10.14.2
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    

    关键信息是:error MSB4019: 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v 4.0\V110\Microsoft.Cpp.Default.props”。
    打开相应目录,可以看到我安装的程序集是V140,这也是vs2015对应的程序集。

    image.png
    网上有人说,可以通过命令npm i nodejieba --msvs_version=2015解决,不过我试了没用。
    也有人说npm config set msvs_version=2015,试了也是一样的结果。
    于是我又试了一下npm config set msvs_version=2017,又提示:
    KeyError:2017
    

    于是,找到下面这篇文章:https://blog.csdn.net/yqq1997/article/details/85231849

    解决方案

    set VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
    

    当然,为了后续方便,也可以将VCTargetsPath添加到系统环境变量中。重新安装,成功!

    F:\tgit\jiebatest>npm i nodejieba
    
    > nodejieba@2.4.1 install F:\tgit\jiebatest\node_modules\nodejieba
    > node-pre-gyp install --fallback-to-build
    
    node-pre-gyp WARN Using needle for node-pre-gyp https download
    node-pre-gyp WARN Tried to download(404): https://github.com/yanyiwu/nodejieba/releases/download/2.4.1/nodejieba-v2.4.1-node-v64-win32-x64.tar.gz
    node-pre-gyp WARN Pre-built binaries not found for nodejieba@2.4.1 and node@10.14.2 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)
    在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
      index.cpp
      nodejieba.cpp
      win_delay_load_hook.cc
         Creating library F:\tgit\jiebatest\node_modules\nodejieba\build\Release\nodejieba.lib and object F:\tgit\jiebatest\node_modules\nodejieba
      \build\Release\nodejieba.exp
      Generating code
      All 3448 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
      Finished generating code
      nodejieba.vcxproj -> F:\tgit\jiebatest\node_modules\nodejieba\build\Release\\nodejieba.node
      nodejieba.vcxproj -> F:\tgit\jiebatest\node_modules\nodejieba\build\Release\nodejieba.pdb (Full PDB)
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN jiebatest@1.0.0 No description
    npm WARN jiebatest@1.0.0 No repository field.
    
    + nodejieba@2.4.1
    added 1 package from 1 contributor in 14.833s
    

    相关文章

      网友评论

          本文标题:win10+x64+vs2015安装nodejieba记录

          本文链接:https://www.haomeiwen.com/subject/awlopktx.html