Node-java安装报错:无法打开输入文件DelayImp.lib
你遇到的是链接器无法定位系统自带库文件的典型问题,DelayImp.lib属于Windows SDK的核心库之一,下面是几个经过验证的解决步骤,按顺序尝试即可:
使用VS2017专属命令提示符执行安装
这是最省心的解决方案,VS的命令提示符会自动配置好所有构建所需的环境变量(包括SDK库路径、CL.exe路径等)。打开「x64 Native Tools Command Prompt for VS 2017」(匹配你的Windows 10 x64架构),切换到项目目录后执行npm install java即可。手动配置Windows SDK环境变量
如果习惯用普通命令提示符,可以手动设置环境变量让npm的构建工具找到SDK路径:# 设置VS2017的目标路径(根据你的VS版本替换,比如Enterprise版) set VCTargetsPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets # 设置Windows SDK根目录 set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\ # 设置SDK版本号(替换成你实际安装的10 SDK版本,比如10.0.19041.0,可去Windows Kits目录查看对应文件夹) set WindowsSDKVersion=10.0.19041.0\配置完成后再执行
npm install java。强制npm使用VS2017的构建工具
有时npm会默认调用旧版本的MSBuild,你可以全局配置让它优先使用VS2017:npm config set msvs_version 2017 --global配置完成后重新运行安装命令。
检查DelayImp.lib是否存在并补装SDK组件
去你的Windows SDK路径查找该文件,比如C:\Program Files (x86)\Windows Kits\10\Lib\[你的SDK版本号]\um\x64下应该存在DelayImp.lib。如果找不到,打开VS2017安装器,确保勾选「Windows 10 SDK」下的「Windows Universal CRT SDK」和「Windows SDK for Desktop C++」组件,完成补装。
另外有个细节需要注意:你同时安装了JDK 1.8和JRE 9,建议将 JAVA_HOME 环境变量指向JDK 1.8的路径(C:\Program Files\Java\jdk1.8.0_131),并把该路径移到系统Path的最前面,避免npm调用到JRE 9——部分node-java模块对高版本JDK的兼容性较差。
内容的提问来源于stack exchange,提问作者Nicolas Leucci

