iOS 9: «неожиданное использование зарезервированного слова« let »в строгом режиме» + «Cannot find variable: fetch».Проблемы с трансплантацией?Как исправить? - PullRequest
0 голосов
/ 09 декабря 2018

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

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

2) "Не удается найти переменную: выборка".Я обнаружил, что 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.

Iобнаружил, что 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.

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

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

1 Ответ

0 голосов
/ 10 декабря 2018

Я проверил все свои зависимости одну за другой -> только что прокомментировал одну за другой импортированные компоненты в 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.

...