iOS9:“在严格模式下意外使用了保留字‘let’”+“找不到变量:fetch”。转译问题?怎么修?
iOS 9: “unexpected use of reserved word ‘let’ in strict mode” + “Can’t find variable: fetch”. Transpiling issues? How to fix?
使用 VueCli 3 "from the box",我发现我的代码在我的 iPad 2 (iOS 9.3) 和使用 iOS 9.3 模拟器上不起作用下一个错误:
1) "unexpected use of reserved word 'let' in strict mode"。出于测试目的,我发现哪个外部组件产生了这个错误并临时删除了它,但后来我又遇到了另一个错误...
2) "Can't find variable: fetch"。我发现fetch
被apollo使用了-link.
似乎由于某种原因我的项目无法转译,但看起来我已经尝试了所有提到的方法 on this doc page。
为了以某种方式转换项目,我尝试做的事情:
1) 我将 iOS >= 9.3
添加到 .browserlistrc
-> 没有任何变化;
2) 将 import '@babel/polyfill'
添加到 main.js
和
module.exports = {
presets: [
['@vue/app', { useBuiltIns: "entry" }]
]
}
到 babel.config.js
-> 没有任何变化;
3) 试图将 on/off 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 与这个问题有任何关系,因为它根本不应该被注册/应该被 [=85= 忽略] 9.
我发现 iOS 9 既不支持 let nor 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
.
正如我从the Babel home page的第3个例子中看到的那样,Babel支持const
并且它必须被转译,但是在编译的chunk-vendors.xyz.js
文件中,它会产生上述所有错误, 现在我看到 507 const
的。似乎 build
忽略了 Babel。
如果有任何想法,我将不胜感激。
我一一检查了我所有的依赖项 -> 只是在 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
.
使用 VueCli 3 "from the box",我发现我的代码在我的 iPad 2 (iOS 9.3) 和使用 iOS 9.3 模拟器上不起作用下一个错误:
1) "unexpected use of reserved word 'let' in strict mode"。出于测试目的,我发现哪个外部组件产生了这个错误并临时删除了它,但后来我又遇到了另一个错误...
2) "Can't find variable: fetch"。我发现fetch
被apollo使用了-link.
似乎由于某种原因我的项目无法转译,但看起来我已经尝试了所有提到的方法 on this doc page。
为了以某种方式转换项目,我尝试做的事情:
1) 我将 iOS >= 9.3
添加到 .browserlistrc
-> 没有任何变化;
2) 将 import '@babel/polyfill'
添加到 main.js
和
module.exports = {
presets: [
['@vue/app', { useBuiltIns: "entry" }]
]
}
到 babel.config.js
-> 没有任何变化;
3) 试图将 on/off 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 与这个问题有任何关系,因为它根本不应该被注册/应该被 [=85= 忽略] 9.
我发现 iOS 9 既不支持 let nor 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
.
正如我从the Babel home page的第3个例子中看到的那样,Babel支持const
并且它必须被转译,但是在编译的chunk-vendors.xyz.js
文件中,它会产生上述所有错误, 现在我看到 507 const
的。似乎 build
忽略了 Babel。
如果有任何想法,我将不胜感激。
我一一检查了我所有的依赖项 -> 只是在 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
.