我使用节点pkg
包来打包我的节点应用程序并创建一个本机可执行文件。但是由于某种原因,当我在我的应用程序中使用serialport
npm包时,它会编译,但当我试图运行它时,它会抛出这个错误(无论我为什么平台构建):
$ ./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
"pkg": {
"scripts": "build/**/*.js",
"assets": [
"node_modules/@serialport/binding*/**/*"
],
"targets": [
"node18-macos-x64",
"node18-win-x64"
],
"outputPath": "dist"
}