কেন প্রতিশ্রুতি.ফিনালি আমার ভ্যু প্রকল্পে এজতে কাজ করছে না?


15

এজতে আমার পলিফিলগুলি কাজ করতে পেতে আমার প্রচণ্ড সমস্যা হচ্ছে। আমি চেষ্টা করেছি ডকুমেন্টেশনগুলি চেষ্টা করে যাচ্ছি সমস্ত চেষ্টা করে না। এটি প্রতিশ্রুতি বলে মনে হচ্ছে। নির্দিষ্টভাবে এটি কাজ করছে না। এটি একটি ভ্যেক্স মডিউলে ঘটে তাই আমি vue.config এ ট্রান্সিলিপডেপেন্সিগুলিতে ভেক্স যুক্ত করার চেষ্টা করেছি তবে ভাগ্য নেই।

এখানে চিত্র বর্ণনা লিখুন

আমার babel.config.js:

module.exports = {
  presets: [['@vue/cli-plugin-babel/preset', {
    useBuiltIns: 'entry',
  }]],
};

আমার মেইন.জেজে আমি খুব নীচে নিম্নলিখিত দুটি আমদানি করছি:

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'],
};

উপরে উল্লিখিত হিসাবে দ্রষ্টব্য আমি ট্রান্সপেইলডেপডেন্সিগুলির সাথে এবং ছাড়া উভয়ই চেষ্টা করেছি। এটি এখানে Vue /es7.promise.finally Babel-preset -app যা ডিফল্ট পলফিল হিসাবে অন্তর্ভুক্ত রয়েছে বলেছে

সংস্করণ:

  • মাইক্রোসফ্ট এজ: 44.18
  • মাইক্রোসফ্ট এজএইচটিএমএল 18.18362
  • @ ভ্যু / ক্লিপ-প্লাগইন-ব্যাবেল ":" ^ 4.1.2 "
  • "কোর-জেএস": "^ 3.6.4"
  • "পুনর্নির্মাণকারী রানটাইম": "^ 0.13.3"

আপডেট 13/02

তাই আমি প্রাইমে আমার সাইটে প্রোমিস.প্রোটোটাইপ টাইপ করার চেষ্টা করেছি এবং এটি পলিফিলড প্রদর্শিত হচ্ছে: এখানে

সুতরাং বর্তমানে আমি তদন্ত করছি যদি আমার চেইনের কিছু অংশ (অক্ষ / ভ্যু অক্ষ) কোনও প্রতিশ্রুতি না ফেরায়। যেহেতু এটি ক্রোমে কাজ করছে আমি সন্দেহ করছি যে চেইনের একটি অংশ সঠিকভাবে পলিফিল হচ্ছে না?

এটি আমার সম্পূর্ণ শৃঙ্খল:

/* 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}`);
  },
  ...
}

3
আকর্ষণীয়, এজটির কোনও পলিফিলের দরকার নেই কারণ এটি ভি 18 এর finally()পরে প্রতিশ্রুতিতে সমর্থন করে
ড্যানিয়েল

কৌতূহলের বাইরে, এজএইচটিএমএল সংস্করণটি কী? আপনি এজ সংস্করণটি পাবেন ঠিক নীচে এটি খুঁজে পেতে পারেন। আমি জিজ্ঞাসা করি কারণ CanIUse ঘাঁটিগুলি এটিকে সমর্থন করে। তাদের সাইট থেকে:*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.
ট্যানার

মাইক্রোসফ্ট এজএইচটিএমএল 18.18362
জে.কির্ক।

2
এজ আপনাকে বলা উচিত যে এটি একটি প্রতিশ্রুতি। বরং এটি বলে যে এটি একটি বস্তু। সুতরাং প্রত্যাবর্তিত বস্তু প্রত্যাশিত প্রতিশ্রুতি নয়।
মাউসার

2
এই প্রশ্নটিকে পুনরায় প্রজনন করে একটি সিদ্ধ ডাউন রেপো সরবরাহ করে উন্নত করা যেতে পারে যাতে অন্যান্য লোকেরা সহায়তা করতে পারে। কোডস্যান্ডবক্স.ওয়ের মতো একটি সাইট এটির জন্য ব্যবহার করা যেতে পারে।
জাইর রেইনা

উত্তর:


1

আমি এর আগে কখনও এই সমস্যার মুখোমুখি হয়েছি। কেবল শেষ পর্যন্ত এজ এ কাজ করেনি। আমি অবশেষে ভিভিভির নীচের মতো আপডেট করেছি এবং এটি কার্যকর হয়েছে।

এটি নীচে বিশদ আচরণের পাশাপাশি তাত্পর্যযোগ্য প্রজাতির বংশ বিস্তার পরিচালনা করতে হবে :

Promise.prototype.finally = Promise.prototype.finally || {
  finally (fn) {
    const onFinally = value => Promise.resolve(fn()).then(() => value);
    return this.then(
      result => onFinally(result),
      reason => onFinally(Promise.reject(reason))
    );
  }
}.finally;

এই বাস্তবায়নটি অবশেষে () এর নথিভুক্ত আচরণের উপর ভিত্তি করে এবং তারপরে () নির্দিষ্টকরণের অনুগত হওয়ার উপর নির্ভর করে :

একটি পরিশেষে কলব্যাক কোনও যুক্তি গ্রহণ করবে না, যেহেতু প্রতিশ্রুতি পূরণ হয়েছে বা প্রত্যাখ্যাত হয়েছে তা নির্ধারণের কোনও নির্ভরযোগ্য উপায় নেই। আপনি যখন প্রত্যাখ্যান কারণ বা সিদ্ধি মূল্য সম্পর্কে চিন্তা করেন না তখন এই ব্যবহারের ক্ষেত্রে সুনির্দিষ্টভাবে হয় এবং তাই এটি সরবরাহ করার প্রয়োজন নেই।

অসদৃশ Promise.resolve(2).then(() => {}, () => {})(যা অপরিবর্তিত দিয়ে সমাধান করা হবে), Promise.resolve(2).finally(() => {})2 দিয়ে সমাধান করা হবে।

একইভাবে, অসদৃশ Promise.reject(3).then(() => {}, () => {})(যা অপরিবর্তিত দ্বারা পরিপূর্ণ Promise.reject(3).finally(() => {}) হবে ), 3 দিয়ে প্রত্যাখ্যান করা হবে।

দ্রষ্টব্য : অবশেষে কলব্যাকে একটি নিক্ষেপ (বা প্রত্যাখ্যাত প্রতিশ্রুতি ফেরানো) থ্রো () কল করার সময় নির্দিষ্ট প্রত্যাখ্যান কারণ সহ নতুন প্রতিশ্রুতি প্রত্যাখ্যান করবে।


0

এটি কোর-জেসের একটি পরিচিত সমস্যা ।

তত্ত্ব অনুসারে, এজ পরিশেষে একটি প্রতিশ্রুতি পলফিল সরবরাহ করে তবে বৈশিষ্ট্য সনাক্তকরণ বা আপনার ব্রাউজারলিস্টের সাথে সম্ভবত কিছু চলছে এবং আপনাকে একটি পলিফিল সরবরাহ করতে হবে: শ্রাগ:

আমি আপনার প্রকল্প থেকে ভ্যু বাবেল প্লাগইন এবং কোর-জেএস উভয় মুছব এবং তারপরে এনটিএম এগুলি তাজা ইনস্টল করব।

  • npm install @vue/cli-plugin-babel --save-dev

  • npm install core-js --save

এছাড়াও, নিশ্চিত করুন যে আপনি এখানে আপনার কনফিগার (babel.config.js) এর মাধ্যমে কোর-জেএস @ 3 ব্যবহার করছেন

সবশেষে, পলিফিলগুলি নিয়ে কথা বলতে কিছু গিথুব সমস্যা আছে + আপনার ভ্যুেক্স স্টোরে কার্যকর করা অন্যান্য 3 য় পক্ষের গ্রন্থাগারগুলির প্রতি শ্রদ্ধা জানায়। আপনার transpileDependenciesবিভাগে এই তিনটি লাইব্রেরি (অক্ষ, ভ্যু-অক্ষ, ভুেক্স) যুক্ত করুন । যদি এটি ঠিক করে দেয়, নির্ভরতাগুলির প্রয়োজন কিনা তা দেখার জন্য নির্ভরতাগুলি সরিয়ে শুরু করুন।


দুর্ভাগ্যক্রমে একই ফলাফল হিসাবে আপনার সমস্ত পরামর্শ চেষ্টা করেছেন :(
জে.কির্ক।

রহস্যময়। একটি তৃতীয় পক্ষের প্লাগইন প্রতিশ্রুতি.ফিনালি মোছা হয়?
জেস

দেরিতে উত্তরের জন্য দুঃখিত. কোনও তৃতীয় পক্ষের প্লাগইন এটি মোছা হয়েছে তা আমি কীভাবে বলতে পারি?
জে.কির্ক

0

.browserslistrcনিম্নলিখিত প্রকল্পের সাথে আপনার প্রকল্পগুলিতে একটি ফাইল যুক্ত করার চেষ্টা করুন :

> 1%
last 2 versions

কনফিগারেশনের https://github.com/browserlist/browserslist#best- অনুশীলনের তথ্য দেখুন last versions


যদি এটি অনুপস্থিত পলি-ফিল সমাধান না করে, আপনি যে প্লাগইনটি ব্যবহার করছেন তা অক্ষম করার চেষ্টা করুন যাতে এটি কোনও পলি-ফিলগুলি বাদ না দেয় তা নিশ্চিত করার জন্য খণ্ডের সংখ্যা সীমিত করে দেয়।

plugins: [
  new webpack.optimize.LimitChunkCountPlugin({
    maxChunks: 6,
  }),
],

আপনার তালিকাভুক্ত সংস্করণগুলির সাথে আমার কাছে ইতিমধ্যে ব্রাউজারলিস্ট রয়েছে। প্লাগইন ছাড়া
সবেমাত্র

আমার Babel প্লাগইন ফাইলটি শুধুমাত্র আছে: module.exports = {প্রিসেট: [ '@ Vue / CLI-প্লাগইন-Babel / প্রিসেট']}
মার্ক

এবং আপনার প্রতিশ্রুতি.ফাইনালি প্রান্তে কাজ করে? আপনার প্যাকেজ তালিকা এবং কনফিগারেশনগুলি আপনি ভাগ করতে পারেন এমন কোনও সম্ভাবনা যাতে আমি কোন প্যাকেজটি সমস্যার কারণ হিসাবে কেটে নেওয়ার চেষ্টা করতে পারি?
জে.কির্ক

আমি সর্বদা ক্লাইভভিজ.আর.জি.গুইড / ক্রিয়েটিং- এ- প্রজেক্ট এইচটিএমএল#vue- create ব্যবহার করে আমার প্রকল্পগুলি তৈরি করি তবে এজ 18+ শেষ পর্যন্ত সমর্থন করে () কেবলমাত্র ইন্টারনেট এক্সপ্লোরারের জন্য পলি- ফিলের প্রয়োজন নেই?
মার্ক

আপনি যে অ্যাপি সার্ভিসটি ব্যবহার করছেন এটি থেকে আপনার সমস্যাটি ছড়িয়ে পড়তে পারে। এটি কোনও স্থানীয় প্রতিশ্রুতি নয় বরং তার নিজস্ব তৈরির একটি অনুকরণযুক্ত ফেরত আসছে be পরীক্ষার হিসাবে সরাসরি অক্ষগুলি ব্যবহার করে একই কল সেট আপ করার চেষ্টা করুন।
মার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.