electron使用sqlite3、escpos、printer、serialport的奇葩问题

报错一系列

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使用的话,一定要对照我列出的版本进行安装。

Guess you like

Origin blog.csdn.net/echo_Ae/article/details/120263212