Node.js 使用nexe或pkg时忽略settings.json文件

Node.js 使用nexe或pkg时忽略settings.json文件,node.js,Node.js,我创建了一个Discord机器人,我想与其他人共享,但我想与之共享的社区有一个坏习惯,即删除信用等等 我想做的是将我的bot脚本编译成我尝试过的nexe本机代码,这很好,但我不希望它对设置文件进行编码,用户需要在其中添加bot令牌,以及bot应该使用的通道 我试着向PKG寻求帮助,但我找不到一个明确的答案来解决这个问题,有没有人能带领我朝着正确的方向前进?有几种方法可以解决这个问题: 让用户传入设置文件位置作为二进制文件的第一个参数:/binary./settings.json 让用户使用设置文

我创建了一个Discord机器人,我想与其他人共享,但我想与之共享的社区有一个坏习惯,即删除信用等等

我想做的是将我的bot脚本编译成我尝试过的nexe本机代码,这很好,但我不希望它对设置文件进行编码,用户需要在其中添加bot令牌,以及bot应该使用的通道


我试着向PKG寻求帮助,但我找不到一个明确的答案来解决这个问题,有没有人能带领我朝着正确的方向前进?

有几种方法可以解决这个问题:

  • 让用户传入设置文件位置作为二进制文件的第一个参数:
    /binary./settings.json
  • 让用户使用设置文件位置设置环境变量:
    BINARY\u settings=/home/user/settings.json./BINARY
  • 设置文件位置应为二进制文件的当前目录
  • 例如,要使用
    pkg
    执行3,您可以使用以下建议:

    另一方面,为了在运行时访问真实的文件系统(选择用户的外部javascript插件、json配置,甚至获取用户目录列表),您应该选择
    process.cwd()
    path.dirname(process.execPath)


    好的,那么我应该通过path.dirname(process.execPath)或者什么来打开文件?尝试使用const settings=fs.readFileSync(path.resolve(process.cwd(),'settings.js'))但是,ehm立即关闭了崩溃程序。很遗憾,我没有收到错误代码。运行二进制文件的目录中是否存在
    settings.js
    ?我发现它必须以一种奇怪的方式运行,但它现在正在运行。const thisPath=process.cwd()const certPath=path.join(thisPath'test.js');const cert=fs.readFileSync(certPath,“utf8”);奇怪的我能够使用它:
    const settings=fs.readFileSync(path.resolve(process.cwd(),'settings.js'),'utf8')
    。这能解决你原来的问题吗?