错误:当使用节点pkg和serialport时,没有找到平台的本机构建



我使用节点pkg包来打包我的节点应用程序并创建一个本机可执行文件。但是由于某种原因,当我在我的应用程序中使用serialportnpm包时,它会编译,但当我试图运行它时,它会抛出这个错误(无论我为什么平台构建):

$ ./app
pkg/prelude/bootstrap.js:1876
throw error;
^
Error: No native build was found for platform=linux arch=x64 runtime=node abi=83 uv=1 libc=glibc node=14.19.2
loaded from: /snapshot/pkg/node_modules/@serialport/bindings-cpp
at Function.path (/snapshot/pkg/node_modules/node-gyp-build/index.js:60:9)
at load (/snapshot/pkg/node_modules/node-gyp-build/index.js:22:30)
at Object.<anonymous> (/snapshot/pkg/node_modules/@serialport/bindings-cpp/dist/load-bindings.js:10:46)
at Module._compile (pkg/prelude/bootstrap.js:1930:22)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at Module.require (pkg/prelude/bootstrap.js:1855:31)
at require (internal/modules/cjs/helpers.js:101:18)

这是我的package.json

{
"name": "pkg",
"version": "1.0.0",
"dependencies": {
"serialport": "^10.4.0"
}
}

这是我的app。js

const { SerialPort } = require('serialport')
const port = new SerialPort({
path: '/dev/ttyUSB0',
baudRate: 19200,
})
console.log('Serial port opened successfully!')

我是这样写的:

$ pkg app.js --target=node14-linux-x64
> pkg@5.7.0

我也有这个问题,在package.json中添加PKG的配置,这里重要的部分是assets,您必须从serialport添加绑定,其余的您可以配置它们供您使用。

编辑:使用包中的配置。使用pkg . --compress Brotli

运行build
"pkg": {
"scripts": "build/**/*.js",
"assets": [
"node_modules/@serialport/binding*/**/*"
],
"targets": [
"node18-macos-x64",
"node18-win-x64"
],
"outputPath": "dist"
}

最新更新