Windows 10上的命令:

npm i pg-native

引发此生成错误:
λ npm i pg-native

> [email protected] install C:\Users\User\MyProject\frontend\node_modules\libpq
> node-gyp rebuild


C:\Users\User\MyProject\frontend\node_modules\libpq>if not defined npm_config_node_gyp (node "C:\Users\User\AppData\Roaming\npm
\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Users
\User\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(55,5): error MSB8020: The build tools for Visual
 Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, please install Visual Studio 2010 build
 tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution,
and then selecting "Retarget solution". [C:\Users\User\MyProject\frontend\node_modules\libpq\build\addon.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:\Users\User\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\build.js:258: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.16299
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\User\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-g
yp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\User\MyProject\frontend\node_modules\libpq
gyp ERR! node -v v6.9.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok

我试图安装Visual Studio/Express 2010,但它没有帮助。还尝试安装PostgreSQL 9.6而不是10,并将其bin目录添加到路径中。那没用。
错误消息建议安装生成工具v100,但在Windows 10上不可能。不支持(或者我不知道怎么支持?)另一个建议的解决方案是“重新定位解决方案”,但也是不可能的,因为给定的c:\\\用户\\MyPosie\FraveS\NoDeDeMask\LBPQ\Budio\AdOn.VCXPRJ解决方案文件不存在,因此不能重新定位。
我是node.js的新手,一开始就完全迷路了。:—(为什么npm不像其他语言那样有二进制包?(例如Python轮、Java jars等)我只想使用基本的libpq函数。为什么我要为此安装2GB的工具链,然后意识到它不会工作?太沮丧了。
顺便说一下,我也试过安装WindowsSDK7.1,因为它包含v100平台工具集,但不能安装在Windows10上。
有没有一种简单的方法将其安装为二进制文件?有谁能在Windows 10上编译它吗?
无论如何,用v100编译是没有意义的,因为它是一个恐龙。如果由于某种未知的原因(我对此表示怀疑),模块必须使用10年前的编译器进行编译,那么在包中包含编译后的二进制文件会更好。(我碰巧知道一个10岁的lipq.dll可以在PostgreSQL 10上工作。)

最佳答案

经过几个小时的努力,这里是解决办法。
在系统中安装PostgreSQL 10。
将postgresql安装的bin目录添加到PATH系统环境变量中。警告!它必须是系统环境,而不是用户环境!
确保安装了最新的npm。
启动新的提升shell(cmd.exe或powershell)。例如,“以管理员身份运行”。如果在步骤2之后没有重新启动系统,请确保可以从该shell运行“pg_config”程序。
按此顺序在同一终端上运行下面的命令。不要在两个命令之间关闭和重新打开终端!

npm install --global --production windows-build-tools
npm install -g node-gyp
npm install -g pg-native

请注意,安装node gyp需要管理员权限,因此您必须以管理员身份全局安装它,即使您只需要一个项目使用它。(我可能错了,但这是我的经历。)
还要注意的是,我可能在许多其他方面是错的,我可能不知道我在做什么,但上面的程序确实解决了这个问题。:-)

09-27 09:52