在使用nodejs的pkg打包工具打包exe包的时候发现引用外部文件做配置文件时需要更改path.join的参数:

var configInfo = require(path.join(process.execPath,'../data/config.json')); //打包用
var configInfo = require(path.join(__dirname,'../data/config.json')); //调试用

process.execPath是一个用于存储当前正在执行的Node.js可执行文件的路径的字符串。它返回Node.js可执行文件的绝对路径,例如/usr/local/bin/node

__dirname是一个全局变量,它表示当前模块的目录的路径。它是相对于当前模块文件所在的路径的字符串。例如,如果__dirname的值是/Users/user/Documents/project, 则表示当前模块的所在路径。

区别在于,process.execPath存储了Node.js可执行文件的路径,而__dirname存储了当前模块的路径。process.execPath在整个Node.js进程中只有一个值,而__dirname在每个模块中都有自己的值,根据当前模块所在的不同,__dirname的值也会不同。

01-31 09:42