Node JS pkg 可执行文件无法从外部读取文件?

问题描述

我有一个 JS 脚本,我使用 pkg --public filename.js 将其打包成可执行文件

我想从这样的文件中读取数据:

let filename = __dirname + "/data/streets_profiles.csv" 
fs.createReadStream(filename)
.pipe(parse({ delimiter: ',' }))
.on('data',(r) => {
    //console.log("r: ",r);
    data.push(r);        
})
.on('end',async () => {
 //... do something

虽然当我在 VS 代码 powershell 中使用 node filename.js 运行脚本时效果很好,但当我将脚本打包成可执行文件时,我得到了这个 the error from executable

我找到了一个解决方案,即添加我想读入 package.json 资产的 csv 文件路径,但我希望能够更改此 csv 文件中的数据而无需创建另一个可执行文件,并且为了不将其作为资产锁定在可执行文件中,而是作为可由 exe 读取的独立可编辑文件,有什么方法可以实现这一点,或者有什么更好的方法可以在没有这些的情况下创建可执行文件限制?

解决方法

因此,经过长时间的研究,我发现打包的可执行文件位于 C:/snapshots 中,因此获取 __dirname 没有用,但是 path.dirname(process.execPath) 解决了我的问题,因为它可以获取实际位置的文件,因此启用对同一目录中的文件的操作