报错一系列
Error: `C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe` failed with exit code: 1
Building module: sqlite3, Completed: 3在此解决方案中一次生成一个项目。若要启用并行生成,请添加“-m”开关。
| Building module: sqlite3, Completed: 3 nothing.vcxproj -> F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\Release\\nothing.lib
/ Building module: sqlite3, Completed: 3 unpack_sqlite_dep
| Building module: sqlite3, Completed: 3 sqlite3.c
| Building module: sqlite3, Completed: 3 win_delay_load_hook.cc
\ Building module: sqlite3, Completed: 3 sqlite3.vcxproj -> F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\Release\\sqlite3.lib
| Building module: sqlite3, Completed: 3 backup.cc
- Building module: sqlite3, Completed: 3F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2263,24): error C2061: 语法错误: 标识符“napi_threadsafe_functio
n” [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2263,23): error C2535: “Napi::ThreadSafeFunction::Thread
SafeFunction(void)”: 已经定义或声明成员函数 [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2262): message : 参见“Napi::ThreadSafeFunction::ThreadSafe
Function”的声明 [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2265,14): error C2833: “operator napi_threadsafe_functio
n”不是可识别的运算符或类型 [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2265,38): error C2059: 语法错误:“newline” [F:\work\kbs\code\
KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2265,46): error C2238: 意外的标记位于“;”之前 [F:\work\kbs\code\Kb
sStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2331,25): error C2061: 语法错误: 标识符“napi_threadsafe_functio
n_call_mode” [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2338,30): error C3646: “_tsfn”: 未知重写说明符 [F:\work\kbs\cod
e\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2338,35): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 i
nt [F:\work\kbs\code\KbsStorePC\node_modules\sqlite3\build\node_sqlite3.vcxproj]
F:\work\kbs\code\KbsStorePC\node_modules\node-addon-api\napi.h(2479,9): error C2061: ....
或者这样
electron-v4.0-win32-x64\node_sqlite3.node'
gyp ERR! cwd F:\my\code\electron\KbsStorePC\node_modules\usb
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Visual Studio installation to use
npm ERR! gyp ERR! stack at VisualStudioFinder.fail (C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
npm ERR! gyp ERR! stack at C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
npm ERR! gyp ERR! stack at VisualStudioFinder.findVisualStudio2013 (C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
npm ERR! gyp ERR! stack at C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
npm ERR! gyp ERR! stack at C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16
npm ERR! gyp ERR! stack at C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7
npm ERR! gyp ERR! stack at C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16
npm ERR! gyp ERR! stack at ChildProcess.exithandler (child_process.js:397:5)
npm ERR! gyp ERR! stack at ChildProcess.emit (events.js:400:28)
npm ERR! gyp ERR! stack at maybeClose (internal/child_process.js:1055:16)
npm ERR! gyp ERR! System Windows_NT 10.0.19043
npm ERR! gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Users\mayur\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd E:\work\chetna node\chetnabackend\node_modules\usb
npm ERR! gyp ERR! node -v v14.17.6
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok.....
statuses.js报错
gyp: undefined variable napi_build_version in binding.gyp while trying to load binding.gyp
等等。。。。一系列问题。
解决方法
解决方法分两步骤....
环境
一、确保你的visual studio安装好
二、安装好python2.7版本并设置好环境变量
cmd
python -v
题外话小知识:
1. 这时候有人会说要设置 npm config set pyhon xxxx 跟 设置visual studio 这些成什么 2017 啥的。。。
你可以来到
这里配置,个人觉得没啥用。
2.也有人说使用来安装
npm install --global windows-build-tools
道理是一样的这个看个人,安装了会自动帮你安装python2.7还会下载visual studio.exe文件,需要你进入到目录运行安装。
正常安装的目录 C:\Users\16330\.windows-build-tools
三、安装node-gyp
npm install -g node-gyp
安装了使用
node-gyp -v
node-gyp list
记得要安装npm、yarn(为什么要yarn,因为这些包下载的时候用npm会有问题,cnpm有些包是找不到的)
好了,编译环境是安装了。
包(依赖)方案
版本要求跟下面一致,安装的时候需要翻墙
ps: escpos包如果单独安装使用 `yarn add escpos` 进行安装,不要使用npm安装。
"dependencies": {
"escpos": "^3.0.0-alpha.6",
"printer": "^0.4.0",
"serialport": "^9.2.1",
"sqlite3": "^4.0.4",
}
安装的时候要把 `"printer": "^0.4.0"` 移除,使用 `yarn isntall` 进行安装
"dependencies": {
"escpos": "^3.0.0-alpha.6",
"serialport": "^9.2.1",
"sqlite3": "^4.0.4",
}
安装完成,使用 `npm install printer --legacy-peer-deps` 进行安装`printer` 速度会比较慢。
安装完就可以编译了
.\node_modules\.bin\electron-rebuild.cmd
运行的时候,escpos包会报错如图:
重新运行就可以了
总结
win10下使用electron的sqlite3、escpos、printer、serialport是很多坑,我也翻遍它们的github了,都没啥解决方案,全部都是版本问题。使用win10使用的话,一定要对照我列出的版本进行安装。