在使用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
的值也会不同。