'fileSystem' разрешена только для упакованных приложений, и это устаревшее упакованное приложение

Мне нужно использовать разрешение fileSystem в manifest.js, чтобы я мог читать / записывать файлы из моего расширения Chrome.

Когда я загружаю расширение с помощью кнопки "Загрузить распакованное расширение", Chrome отображает:

'fileSystem' is only allowed for packaged apps, and this is a legacy packaged app.

Так что для Chrome мое расширение является устаревшим упакованным приложением.

Мой вопрос заключается в том, как технически преобразовать "устаревшее упакованное приложение" в "упакованные приложения", чтобы я мог протестировать API файловой системы?

Вот мой манифест:

{
 "name": "MyApp",
 "version": "1.0",
 "manifest_version": 2,
  "app": {
  "launch": {
  "local_path": "index.html"
  }
 },
 "icons": {
 "128": "favicon.ico"
 },
  "permissions" : [
    "fileSystem"
  ]
}

На самом деле я уже использую "manifest_version": 2,

2 ответа

Решение

Упакованные приложения имеют другую структуру в разделе "приложения" манифеста. Ваш manifest.json будет выглядеть примерно так:

{
  "name": "MyApp",
  "version": "1.0",
  "manifest_version": 2,
  "app": {
    "background": {
      "scripts": [
        "main.js"
      ]
    }
  },
  "icons": {
    "128": "favicon.ico"
  },
  "permissions": [
    "fileSystem"
  ]
}

и вам также понадобится фоновый скрипт ("main.js" в этом примере), который открывает ваш index.html, когда пользователь нажимает на значок приложения:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('index.html', {
    bounds: {
      width: 500,
      height: 300
    }
  });
});

Добавьте это в свой манифест:

"manifest_version": 2,
Другие вопросы по тегам