所以我使用 pkg 创建一个相当简单的 node/express 应用程序的可执行文件。我遇到了 npm 模块 robotsjs 的问题,每当我创建我的 exe 时,由于以下错误,它不会运行:
pkg/prelude/bootstrap.js:1740
throw error;
^
TypeError: Cannot read property '1' of null
at process.dlopen (pkg/prelude/bootstrap.js:2071:69)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1131:18)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at Module.require (pkg/prelude/bootstrap.js:1719:31)
at require (internal/modules/cjs/helpers.js:92:18)
at Object.<anonymous> (C:\snapshot\visortokey\node_modules\robotjs\index.js:1:77)
at Module._compile (pkg/prelude/bootstrap.js:1794:22)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
当我在我的项目中删除对robotjs的调用时,它工作得很好。
我的 package.json 中有以下内容
{
"name": "project",
"bin": "src/app.js",
"version": "1.0.0",
"description": "",
"main": "src/app.js",
"scripts": {
"start": "node src/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"pkg": {
"assets": [
"templates/**/*",
"public/**/*"
],
"targets": [
"node14"
],
"outputPath": "dist"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"hbs": "^4.1.2",
"http": "0.0.1-security",
"nodemon": "^2.0.14",
"path": "^0.12.7",
"pkg": "^5.3.3",
"robotjs": "git+https://github.com/octalmage/robotjs.git",
"socket.io": "^4.3.1"
},
"devDependencies": {}
}
当我运行 pkg 时。--debug,它显示的最后一个错误是:
[debug] prebuild-install
failed[C:\Users\Documents\visortokey\node_modules\robotjs\build\Release\robotjs.node
]:
Error: spawnSync
C:\npm\node_modules\pkg\node_modules\.bin\prebuild-install
ENOENT
有任何想法吗?我尝试更新robotjs prebuild-install,在我的dist文件夹中添加robotjs的本地资源,从npm而不是github安装robotjs,将robotjs模块添加为资产,但无论我做什么,我都无法解决这个问题。