Ho enormi problemi a far funzionare i miei polyfill in Edge. Ho provato a seguire la documentazione con vari tentativi tutti non funzionanti. Sembra essere promettente, in definitiva specificamente che non funziona. Questo succede in un modulo vuex, quindi ho provato ad aggiungere vuex a transpileDependencies in vue.config ma senza fortuna.
Il mio babel.config.js:
module.exports = {
presets: [['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'entry',
}]],
};
Nel mio main.js ho le seguenti due importazioni in cima:
import 'core-js/stable';
import 'regenerator-runtime/runtime';
Il mio vue.config.js
// eslint-disable-next-line import/no-extraneous-dependencies
const webpack = require('webpack');
const isProd = process.env.NODE_ENV === 'production';
module.exports = {
configureWebpack: {
// Set up all the aliases we use in our app.
plugins: [
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 6,
}),
],
},
css: {
// Enable CSS source maps.
sourceMap: !isProd,
},
transpileDependencies: ['vuex'],
};
Nota come detto sopra ho provato sia con che senza transpileDepedencies. Qui si dice vue / babel-preimpostato-app , che es7.promise.finally
è incluso come polyfill di default
versioni:
- Microsoft Edge: 44.18
- Microsoft EdgeHTML 18.18362
- @ vue / cli-plugin-babel ":" ^ 4.1.2 "
- "core-js": "^ 3.6.4"
- "rigenerator-runtime": "^ 0.13.3"
Aggiornamento 13/02
Quindi ho provato a digitare Promise.prototype sul mio sito in edge e sembra che sia polifillato:
Quindi attualmente sto indagando se una parte della mia catena (axios / vue axios) non restituisce una promessa. Dal momento che funziona in Chrome, sospetto che una parte della catena non venga riempita correttamente?
Questa è la mia intera catena:
/* VUEX MODULE ACTION */
[a.ALL_CUSTOMERS](context) {
context.commit(m.SET_CUSTOMER_LOADING, true);
CustomerService.getAll()
.then(({ data }) => {
context.commit(m.SET_CUSTOMERS, data);
})
.finally(() => context.commit(m.SET_CUSTOMER_LOADING, false));
},
/* CUSTOMER SERVICE */
import ApiService from '@/common/api.service';
const CustomerService = {
getAll() {
const resource = 'customers/';
return ApiService.get(resource);
},
...
}
/* API SERVICE */
import Vue from 'vue';
import axios from 'axios';
import VueAxios from 'vue-axios';
const ApiService = {
init() {
Vue.use(VueAxios, axios);
let baseUrl = process.env.VUE_APP_APIURL;
Vue.axios.defaults.baseURL = baseUrl;
},
setHeader() {
Vue.axios.defaults.headers.common.Authorization = `Bearer ${getToken()}`;
},
get(resource) {
this.setHeader();
return Vue.axios.get(`${resource}`);
},
...
}
*Version number used for Edge is based on the number of EdgeHTML rather than Edge itself. This is because EdgeHTML is the engine for Edge that is related to feature support change.
finally()
Promise dalla v18