我写了一个node脚本,在用pkg打包的时候,遇到了下面的情况
Warning Cannot include directory %1 into executable.
The directory must be distributed with executable as %2.
%1: node_modules\puppeteer\.local-chromium
%2: path-to-executable/puppeteer
我这个情况属于是找不到默认浏览器了,但是我设置了默认路径
一番查找才发现pkg的一个特点,打包的时候需要使用绝对路径,所以使用path.resolve()
将相对路径转化为绝对路径就可以了
executablePath: path.resolve('./node_modules/puppeteer/.local-chromium/win64-1022525/chrome-win/chrome.exe'),
其它问题
1.后续问题
这样成功打包之后,运行起来了,但是运行到一半又出问题了Error:Passed function is not well-serializable!
好在也找到了解决方法,虽然不知道原理,不过能用就好
pkg -t win index.js --public
在打包命令的最后添加--public
2.衍生问题
上面提到pkg打包的时候,不能识别相对路径,就把所有用相对路径的地方用path转化为了绝对路径
俗话说得好。每当修好一个bug,就会有一个新的bug诞生
后边用rollup打包代码的时候,不能用node运行,报错 Could not dynamically require "F:\desk\mysgj\dist\src\random.js".
改了一上午才搞明白,这是识别不了绝对路径,我改回相对路径就好了,然后对照实验方式再测了测
得出结论:
rollup不能识别require的绝对路径,用相对路径才行,其他地方用绝对路径没事
。