前言

就是写了一个简单的node.js程序,也只引入了一个axios包,再用pkg打包后,运行直接闪退,再cmd打开后看到报错内容是找不到axios包,包是没问题的,网上的方法也都试了,关于pkg打包包含axios包报错问题也极少,所以看到我这里的同学不用再去看其他教程了,博主折腾了几个小时找到了万能解决办法,跟着来看怎么解决吧!

报错信息大概如下:

pkg/prelude/bootstrap.js:1872
      throw error;
      ^

Error: Cannot find module 'C:\snapshot\千川计划名称批量更改\node_modules\axios\dist\node\axios.cjs'
1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.
    at createEsmNotFoundErr (node:internal/modules/cjs/loader:967:15)
    at finalizeEsmResolution (node:internal/modules/cjs/loader:960:15)
    at resolveExports (node:internal/modules/cjs/loader:488:14)
    at Module._findPath (node:internal/modules/cjs/loader:528:31)
    at Module._resolveFilename (node:internal/modules/cjs/loader:932:27)
    at Function._resolveFilename (pkg/prelude/bootstrap.js:1951:46)
    at Module._load (node:internal/modules/cjs/loader:787:27)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at Module.require (pkg/prelude/bootstrap.js:1851:31)
    at require (node:internal/modules/cjs/helpers:102:18) {
  code: 'MODULE_NOT_FOUND',
  path: 'C:\\snapshot\\千川计划名称批量更改\\node_modules\\axios\\package.json',
  pkg: true
}

Node.js v18.5.0

ncc

先介绍一下这个库,ncc是一个简单的打包工具,可以把一个node项目,打包成单个的js文件,打包完成后是不需要依赖任何包的,单js文件。
项目地址:https://github.com/vercel/ncc

  1. 安装

    npm i -g @vercel/ncc
  2. 使用

    ncc <cmd> <opts>
  3. 示例

    ncc build input.js -o dist

    打包完毕之后会在当前工程目录中,创建一个dist文件夹,存放打包后的文件index.js

    pkg

    可以将 Node.js 项目打包为可执行文件,甚至可以在未安装 Node.js 的设备上运行。

  4. 安装

    npm install -g pkg
  5. 使用

    pkg app.js

    此命令可以将app.js打包多个平台的可执行文件。

我们只需要将打包的文件换成ncc转换后的文件,即可解决所有找不到包的问题!

最后修改:2023 年 07 月 29 日
如果觉得我的文章对你有用,请随意赞赏