ElectronStore не разрешен доступ к конфигурации в доме для привязки со «строгим» ограничением? - PullRequest
1 голос
/ 10 июля 2019

Я создаю приложение Electron, которое просто представляет веб-URL в BrowserWindow. Я использую Electron-Builder для упаковки приложения в виде пакета .deb и Snap. .deb просто работает. Но электронный магазин не имеет разрешения на доступ к config.json в каталоге HOME, когда я строю оснастку, используя ' строго ' ограничение.

Все отлично работает, когда я использую ' classic ' или ' devmode '.

Я попытался очистить все кэши npm, файлы configStore в $ HOME / .config.

main.js запрашивает вызовы ElectronStore.set() при отправке событий изменения размера и закрытия. Вот когда появляется ошибка.

соответствующий main.js код

mainWindow.on('close', function() {
    conf.set('windowBounds', mainWindow.getBounds())
    conf.set("lastLink", mainWindow.webContents.getURL())
  })

сборка инструкция для сборщик электронов в package.json

"build": {
    "appId": "org.anuj.${name}",
    "asar": true,
    "copyright": "MIT ©2019 Anuj Datar",
    "linux": {
      "category": "Notes;Office;Productivity",
      "packageCategory": "Notes;Office;Productivity",
      "description": "OneNote Desktop Client for Linux",
      "synopsis": "OneNote Desktop Client",
      "icon": "./src/images/icon.icns",
      "target": [
        "deb",
        "AppImage",
        "snap"
      ],
      "maintainer": "Anuj Datar <anuj.datar@gmail.com>",
      "artifactName": "${name}-${version}-${arch}.${ext}"
    },
    "deb": {
      "depends": [
        "gconf2",
        "gconf-service",
        "libnotify4",
        "libappindicator1",
        "libxtst6",
        "libnss3"
      ]
    },
    "snap": {
      "confinement": "strict",
      "grade": "stable"
    },
    "appImage": {
      "license": "LICENSE.md"
    }
  }
}

Предполагается, что размер окна и последняя посещенная ссылка сохраняются в конфигурации, поэтому сеанс можно возобновить при следующем запуске приложения. Вместо этого ничего не сохраняется, и я получаю следующее сообщение об ошибке:

Произошла ошибка JavaScript в основном процессе

Неисследованное исключение:

Ошибка: EPERM: операция не разрешена, chown «/home/anuj/snap/onenote-desktop/x1/.config/OneNote/config.json.1014786569'

  • в Object.chownSync (fs.js: 1142: 3)
  • в Function.writeFileSync [как синхронизация] (/snap/onenote-desktop/x1/resources/app.asar/node_modules/write-file-atomic/index.js:196:27)
  • в магазине ElectronStore.set [как магазин] (/snap/onenote-desktop/x1/resources/app.asar/node_modules/conf/index.js:227:19)
  • в магазине ElectronStore.set (/snap/onenote-desktop/x1/resources/app.asar/node_modules/conf/index.js:152:14)
  • в BrowseWindow. <anonymous> (/snap/onenote-desktop/x1/resources/app.asar/src/main.js:44:10)
  • в BrowserWindow.emit (events.js: 194: 13)

Вот проблема GitHub

...