Edgeでポリフィルを機能させるのに非常に苦労しています。私はすべてがうまくいかない様々な試みでドキュメントを追おうとしました。それはpromise.finally具体的には機能していないようです。これはvuexモジュールで発生するため、vue.configの transpileDependenciesにvuexを追加しようとしましたが、うまくいきませんでした。
私のbabel.config.js:
module.exports = {
presets: [['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'entry',
}]],
};
私のmain.jsでは、最上部に次の2つのインポートがあります。
import 'core-js/stable';
import 'regenerator-runtime/runtime';
私の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'],
};
上記のように、私はtranspileDepedenciesを使用した場合と使用しない場合の両方を試しました。デフォルトのポリフィルとして含まれているvue / babel-es7.promise.finally
preset -appがここに表示されます
バージョン:
- Microsoft Edge:44.18
- Microsoft EdgeHTML 18.18362
- @ vue / cli-plugin-babel ":" ^ 4.1.2 "
- "core-js": "^ 3.6.4"
- "再生器ランタイム": "^ 0.13.3"
13/02更新
だから私はエッジで私のサイトでPromise.prototypeを入力しようとしました、そしてそれはそれがポリフィルされているように見えます:
したがって、現在、チェーンの一部(axios / vue axios)が約束を返さないかどうかを調査しています。それはクロムで動作しているので、チェーンの一部が正しくポリフィルされていないのではないかと思いますか?
これは私の全体のチェーンです:
/* 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 でサポートされているEdgeはポリフィルを必要としないはずです