前言
就是写了一个简单的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
安装
npm i -g @vercel/ncc
使用
ncc <cmd> <opts>
示例
ncc build input.js -o dist
打包完毕之后会在当前工程目录中,创建一个dist文件夹,存放打包后的文件index.js
pkg
可以将 Node.js 项目打包为可执行文件,甚至可以在未安装 Node.js 的设备上运行。
安装
npm install -g pkg
使用
pkg app.js
此命令可以将app.js打包多个平台的可执行文件。
我们只需要将打包的文件换成ncc转换后的文件,即可解决所有找不到包的问题!