iOS 9: "неожиданное использование зарезервированного слова" let "в строгом режиме" + "Cannot find variable: fetch". Проблемы с трансплантацией? Как исправить?

Используя VueCli 3 "из коробки", я обнаружил, что мой код не работает на моем iPad 2 (iOS 9.3) и, используя эмулятор iOS 9.3, я получил следующие ошибки:

1) "неожиданное использование зарезервированного слова" let "в строгом режиме". В целях тестирования я обнаружил, какой внешний компонент создает эту ошибку, и временно удалил ее, но затем я получил другую ошибку...

2) "Не могу найти переменную: fetch". я нашел это fetch используется apollo-link.

Кажется, что по какой-то причине мой проект не может быть перенесен, однако, похоже, я перепробовал все, что упомянуто на этой странице документа.

Что я пытался сделать, чтобы как-то перенести проект:

1) я добавил iOS >= 9.3 в .browserlistrc -> ничего не изменилось;

2) Добавлено import '@babel/polyfill' в main.js а также

module.exports = {
  presets: [
    ['@vue/app', { useBuiltIns: "entry" }]
  ]
} 

в babel.config.js -> ничего не изменилось;

3) Пытался включить / выключить modern mode -> ничего не изменилось;

4) Пытался добавить

module.exports = {
  ...
  transpileDependencies: ['vue-apollo']
}

в vue.config.js -> ничего не изменилось.

На всякий случай мой dependencies:

"dependencies": {
  "bootstrap-vue": "^2.0.0-rc.11",
  "register-service-worker": "^1.5.2",
  "vue": "^2.5.17",
  "vue-apollo": "^3.0.0-beta.11",
  "vue-awesome-swiper": "^3.1.3",
  "vue-draggable-resizable": "git+https://github.com/mauricius/vue-draggable-resizable.git#develop",
  "vue-router": "^3.0.1",
  "vue-youtube": "^1.3.0",
  "vuedraggable": "^2.17.0",
  "vuex": "^3.0.1",
  "vuex-persistedstate": "^2.5.4"
},

Так что ничего не помогло -> все еще есть проблемы с iOS 9.3. Мой проект использует PWA/ServiceWorker, который iOS 9 не поддерживает, но я не думаю, что SW имеет какое-либо отношение к этой проблеме, поскольку он просто не должен быть зарегистрирован / должен игнорироваться iOS 9.

Я обнаружил, что iOS 9 не поддерживает ни let, ни fetch, но, как я понимаю, vue-cli должен справиться с этим на основе моих настроек. Я пропустил какие-либо настройки?

Итак, что я должен сделать, чтобы проект работал на iOS 9?

РЕДАКТИРОВАТЬ:

1) let из vue-draggable-resizable, который я временно убрал.

2) fetch Я исправил, добавив import 'whatwg-fetch' в main.js

Теперь я вижу следующую проблему:Unexpected keyword 'const'. Const declarations are not supported in strict mode,

Как видно из третьего примера с домашней страницы Babel, Babel поддерживает const и это должно быть перенесено, но в скомпилированном chunk-vendors.xyz.js файл, который выдает все ошибки, упомянутые выше, теперь я вижу 507 const"S. Это похоже на build игнорирует Бабель.

Буду признателен за любые идеи.

1 ответ

Решение

Я проверил все мои зависимости один за другим -> просто прокомментировал один за другим импортированные компоненты в main.js а также App.vue изменился на:

<template>
  <div id="app">
    TEST
  </div>
</template>

Результат:

1) boostrap-vue производит const проблемы

2) vue-draggable-resizable производит let проблемы.

3) apollo-link производит fetch проблемы.

Итак, в моем случае мне нужно было добавить import 'whatwg-fetch' в main.js а также

module.exports = {
  ...
  transpileDependencies: ['bootstrap-vue', 'vue-draggable-resizable']
}

в vue.config.js,

Другие вопросы по тегам