node-gyp build 编译时sqlserver.vcproj不存在的报错是啥原因

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node-gyp build 编译时sqlserver.vcproj不存在的报错是啥原因相关的知识,希望对你有一定的参考价值。

参考技术A 错误一
缺少Python环境:
G:\nodejs\moviesite\node_modules\bcrypt>if not defined npm_config_node_gyp (node
"D:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\
node-gyp\bin\node-gyp.js" rebuild ) else (rebuild)
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack at failNoPython (D:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:103:14)
gyp ERR! stack at D:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:64:11
gyp ERR! stack at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
gyp ERR! System Windows_NT 6.3.9600
gyp ERR! command "node" "D:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd G:\nodejs\moviesite\node_modules\bcrypt
gyp ERR! node -v v0.12.2
gyp ERR! node-gyp -v v1.0.3
gyp ERR! not ok
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "D:\\Program Files\\nodejs\\\\node.exe" "D:\\Program Files\\nodejs
\\node_modules\\npm\\bin\\npm-cli.js" "install" "bcrypt" "--save"
npm ERR! node v0.12.2
npm ERR! npm v2.7.4
npm ERR! code ELIFECYCLE

npm ERR! bcrypt@0.8.3 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@0.8.3 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the bcrypt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls bcrypt
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! G:\nodejs\moviesite\npm-debug.log123456789101112131415161718192021222324252627282930313233343536373839123456789101112131415161718192021222324252627282930313233343536373839

安装python解决,python(v2.7 recommended, v3.x.x is not supported)
下载:http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi
错误二:
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,
1) 安装 .NET Fram
ework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了
其他位置,请将其位置添加到系统
路径中。 [G:\nodejs\moviesite\node_modules\bcrypt\build\binding.sln]
gyp ERR! build error
如图:

需要安装Microsoft Visual Studio Express 2013 for Windows Desktop
(版本应该不限制,我安装的是上边的版本)
安装成功,但是出现了警告,警告不影响bcrypt的使用本回答被提问者采纳

Docker Node Alpine Image Build 在 node-gyp 上失败

【中文标题】Docker Node Alpine Image Build 在 node-gyp 上失败【英文标题】:Docker Node Alpine Image Build Fails on node-gyp 【发布时间】:2019-06-23 00:38:29 【问题描述】:

我正在尝试 Dockerize 一个 Vue.js 应用程序。我使用node:10.15-alpine Docker 映像作为基础。映像构建失败并出现以下错误:

gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:484:19)
gyp ERR! stack     at PythonFinder.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:406:16)
gyp ERR! stack     at F (/usr/local/lib/node_modules/npm/node_modules/which/which.js:68:16)
gyp ERR! stack     at E (/usr/local/lib/node_modules/npm/node_modules/which/which.js:80:29)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/which/which.js:89:16
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/index.js:42:5
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/mode.js:8:5
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:154:21)
gyp ERR! System Linux 4.9.125-linuxkit
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/inotify
gyp ERR! node -v v10.15.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted "os":"darwin","arch":"any" (current: "os":"linux","arch":"x64")

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! inotify@1.4.2 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the inotify@1.4.2 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

应用程序在我的 Ubuntu 机器上运行。我已经在网上搜索了解决方案。

我试过了:

FROM node:10.15-alpine
EXPOSE 8080
RUN mkdir -p /app/src
WORKDIR /app
COPY build/ config/ dist/ static/ .babelrc .postcs-s-rc.js index.html /app/
COPY package*.json ./
RUN apk add --no-cache make gcc g++ python && \
  npm install --production --silent && \
  apk del make gcc g++ python
ADD src/ /app/src/
CMD ["npm", "start"]

这也失败了。错误输出非常冗长,并且引用了 C/C++ 代码。

这是我当前的 Dockerfile:

FROM node:10.15-alpine
EXPOSE 8080
RUN mkdir -p /app/src
WORKDIR /app
COPY build/ config/ dist/ static/ .babelrc .postcs-s-rc.js index.html /app/
COPY package*.json ./
RUN npm install
ADD src/ /app/src/
CMD ["npm", "start"]

谁能帮我用 node-gyp 解决这个问题?我希望能够使用 Docker 容器运行应用程序,但我需要先构建映像。

更新

由于构建在我的 Ubuntu 机器上运行,我检查了 node 版本。它是 8.12,所以我切换到使用 node:8.12-alpine 图像,应用程序现在可以使用以下 Dockerfile:

FROM node:8.12-alpine
RUN apk add g++ make python
EXPOSE 8080
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN npm install
CMD ["npm", "start"]

【问题讨论】:

GitHub 上的这个问题可能会提供一些见解:Document how to use alpine with dependencies that rely on node-gyp 谢谢@zero298 我确实看到了这个问题。我找到了解决方案并更新了我的帖子。干杯! 【参考方案1】:

在我的帖子更新中也说明了,这是我用来让事情正常工作的Dockerfile

FROM node:8.12-alpine
RUN apk add g++ make python
EXPOSE 8080
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN npm install
CMD ["npm", "start"]

如果您的要求要求映像最小化空间,请考虑使用RUN apk add --no-cache --virtual [package-list](而不是api add [package-list])安装必要的包,然后使用RUN apk del .gyp 清除映像中的缓存。

【讨论】:

它也适用于我。秘密就在这个命令中:RUN apk add g++ make python。谢谢 没有找到python包。我不得不改用 py3-pip 是的,python 包不再工作了。现在你应该使用RUN apk add g++ make py3-pip 缩小容器的@MGLondon 答案应该是新接受的答案,或者应该更新这个答案 @KevinDanikowski,关于您提出的顺序问题,最初的问题没有提到任何关于最小化图像尺寸的内容,因此在答案中没有这个应该是可以接受的 - 我继续并将它添加到您的建议虽然。我的答案在这里并在@MGLondon 之前被接受;我认为将该信息添加为已接受答案的编辑会更合适。【参考方案2】:

由于您在 docker 上使用 Alpine 版本,因此您可能希望尽可能少地使用空间,同时修复 node-gyp rebuild 错误。为此,建议使用以下命令,即不使用缓存并使用稍后可以删除的虚拟包。此外,您应该将apk addnpm install 命令组合在一起;这将有助于进一步减少 docker 缓存层之间的空间。

FROM node:8.12-alpine
EXPOSE 8080
WORKDIR /app
COPY . .
RUN apk add --no-cache --virtual .gyp \
        python \
        make \
        g++ \
    && npm install \
    && apk del .gyp
CMD ["npm", "start"]

【讨论】:

非常感谢,您帮助我将图片尺寸缩小了 72%。 用户构建镜像比删除包优化更简单 ***.com/a/69477720/6618218 我面临的问题只是添加了RUN apk add --no-cache --virtual .gyp \ python \ make \ g++ ` IT WORKED. Was it was issue to compilation to C++ at native level? Can you check error that i was facing on URL above was it due missing g++, python thing`?顺便说一句,非常感谢 我使用的是FROM node:14.18-alpine,只是好奇它可以在像 FROM node:14` 这样的完整图像上工作吗?是由于高山形象吗?对不起 NOOB 问题:)【参考方案3】:

对于使用 node:14-alpine 的任何人,这已为我修复:RUN apk add --no-cache python3 py3-pip make g++

【讨论】:

以上是关于node-gyp build 编译时sqlserver.vcproj不存在的报错是啥原因的主要内容,如果未能解决你的问题,请参考以下文章

Node sqlite node-gyp build error:'v8 :: Object'中没有名为'ForceSet'的成员

Docker Node Alpine Image Build 在 node-gyp 上失败

将 node-gyp 标志传递给包时, yarn add package --build-from-source 的行为是不是类似于 npm install package --build-from-

npm install jquery 在 node-gyp 重建时失败

node-pre-gyp install --fallback-to-build 错误

node-gyp编译c++编写的node扩展