当前位置: 代码网 > it编程>前端脚本>Node.js > Nodejs使用pkg打包为可执行文件的解决方案

Nodejs使用pkg打包为可执行文件的解决方案

2024年11月25日 Node.js 我要评论
安装pkgnpm install -g pkg查看pkg命令pkg --help修改package.json新增bin入口配置{ "name": "takescreenshot", "versio

安装pkg

npm install -g pkg

查看pkg命令

pkg --help

修改package.json

新增bin入口配置

{
  "name": "takescreenshot",
  "version": "1.0.0",
  "bin": "app.js",   // 新增bin入口配置
  "scripts": {
    "test": "echo \"error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "isc",
  "description": "",
  "dependencies": {
    "express": "^4.21.1",
  }
}

打包

默认打包

pkg .

如果上面package.json没有配置bin的话,可以执行

pkg .\app.js

指定打包的文件名

pkg . --target win --output 你的文件名.exe

报错解决

ps e:\takeproject\takescreenshot> pkg .        
> pkg@5.8.1
> targets not specified. assuming:
  node16-linux-x64, node16-macos-x64, node16-win-x64
> fetching base node.js binaries to pkg_cache_path
  fetched-v16.16.0-win-x64            [                    ] 0%> not found in remote cache:
  {"tag":"v3.4","name":"node-v16.16.0-win-x64"}
> building base binary from source:
  built-v16.16.0-win-x64
> fetching node.js source archive from nodejs.org...
> error! assertionerror [err_assertion]: the expression evaluated to a falsy value:

  (0, assert_1.default)(!this.bar)

    at log.enableprogress (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\log.js:64:30)
    at d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:58:31
    at step (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:33:23)
    at object.next (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:14:53)
    at d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:8:71
    at new promise (<anonymous>)
    at __awaiter (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:4:12)
    at downloadurl (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:53:12)
    at d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\build.js:142:66
    at step (d:\ruanjian\node\nvm\v16.20.2\node_modules\pkg\node_modules\pkg-fetch\lib-es5\build.js:44:23)

进入网站: https://github.com/vercel/pkg-fetch/releases

找到我报错的tag的版本,点进这个版本的详情

找到报错的对象的name值里面的版本号信息

例如上面我的报错的版本是16.16.0,那就在网站上面找到这个版本

下载报错的name的名称对应文件

我报错的是{"tag":"v3.4","name":"node-v16.16.0-win-x64"}

则在这里找到node-v16.16.0-win-x64点击下载

下面的v3.4是上面报错的对象的tag属性的值

找到c:\users\22560\.pkg-cache\v3.4文件夹

将上面下载的文件放到文件夹内,并重命名为fetched-v16.16.0-win-x64

同理:linuxmacos下载也是一样,复制到该文件夹内然后将前缀node改成fetched即可

然后重新pkg .即可

到此这篇关于nodejs使用pkg打包为可执行文件的文章就介绍到这了,更多相关nodejs使用pkg打包内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com