首页 > 解决方案 > iOS 9:“在严格模式下意外使用了保留字 'let'”+“找不到变量:获取”。转译问题?怎么修?

问题描述

我发现使用“开箱即用”的 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 仍然存在问题。我的项目使用 iOS 9 不支持的 PWA/ServiceWorker,但我认为 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。似乎build忽略了巴别塔。

我会很感激任何想法。

标签: iosvuejs2babeljstranspilervue-cli-3

解决方案


我一一检查了我的所有依赖项->只是将导入的组件一一注释main.jsApp.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.


推荐阅读