Auto: تحديد سبب spawnSync / bin / sh E2BIG التلقائي

تم إنشاؤها على ١٢ يونيو ٢٠٢٠  ·  6تعليقات  ·  مصدر: intuit/auto

صف الخلل

حاليًا أخفق تصميمي الأخير في خطوة الإصدار مع ظهور خطأ E2BIG. لقد أجريت بعض الأبحاث ووجدت أن هذا قد يرجع إلى عدة أسباب مثل العديد من حجة الأوامر (لا يبدو كما هو الحال هنا) أو النصوص الكبيرة جدًا.

أشعر أنه قد يكون الأخير ، لكني غير متأكد من كيفية تصحيح المشكلة.

سأحاول عملًا مؤقتًا وأعلق على سطور

لإعادة إنتاج

أحاول معرفة ذلك الآن.

سلوك متوقع

إما أن تذكر الملف المثير للقلق ، أو لا تُلقي بخطأ

معلومات البيئة:

Gitlab CI & Local (آلة قوس لينكس)

سياق إضافي

لا أعتقد أن هذا يرجع بالضرورة إلى السيارات. على الأرجح مشكلة تفرخ ، فقط برزت أنه سيكون من المفيد النشر هنا لأي شخص يواجه مشكلة مماثلة في المستقبل ، ولتصحيح الأفكار.

bug hacktoberfest

التعليق الأكثر فائدة

يمكن أن يكون الحل هو تخزين Args في مكان ما على القرص والسماح للأمر بالسحب من هناك بدلاً من env var. لكن هذا تغيير كبير جدًا بالنسبة للمكوِّن الإضافي

لإلغاء حظر هذا البرنامج المساعد يفعل نفس الشيء

const { SEMVER, execPromise, getCurrentBranch } = require("@auto-it/core");

module.exports = class NextCherryPickPlugin {
  constructor() {
    this.name = "update docs";
  }

  /**
   * Setup the plugin
   *
   * <strong i="7">@param</strong> {import('@auto-canary/core').default} auto
   */
  apply(auto) {
    auto.hooks.beforeCommitChangelog.tapPromise(this.name, async (config) => {
      await execPromise("yarn", ["lint:doc:fix"]);
      await execPromise("git", ["add", "."]);
    });
  }
};

ال 6 كومينتر

أعتقد أن هذا قد يكون عيبًا فادحًا في المكوّن الإضافي exec .

يعني E2BIG وجود عدد كبير جدًا من الوسائط في المكالمة execSync . أنا متأكد من أن args التي تتحدث عنها هي فقط كل معلومات الخطاف التي نمررها من خلال متغيرات env ( $ARG0 ).

لست متأكدًا حقًا مما إذا كان هذا شيء يمكننا إصلاحه. قد تضطر إلى توثيق هذا القيد وربما إضافة خيار للتخلي عن تمرير المعلومات السياقية.

يمكن أن يكون الحل هو تخزين Args في مكان ما على القرص والسماح للأمر بالسحب من هناك بدلاً من env var. لكن هذا تغيير كبير جدًا بالنسبة للمكوِّن الإضافي

لإلغاء حظر هذا البرنامج المساعد يفعل نفس الشيء

const { SEMVER, execPromise, getCurrentBranch } = require("@auto-it/core");

module.exports = class NextCherryPickPlugin {
  constructor() {
    this.name = "update docs";
  }

  /**
   * Setup the plugin
   *
   * <strong i="7">@param</strong> {import('@auto-canary/core').default} auto
   */
  apply(auto) {
    auto.hooks.beforeCommitChangelog.tapPromise(this.name, async (config) => {
      await execPromise("yarn", ["lint:doc:fix"]);
      await execPromise("git", ["add", "."]);
    });
  }
};

إذا كان بإمكانك إيجاد حل لـ E2BIG فسيكون ذلك رائعًا! (أو أي شخص آخر يرى هذه المشكلة)

بالتأكيد سأفكر في الأمر ، يجب أن تكون هناك طريقة ما للتغلب عليها. شكرا!

أرى في قائمة execSpawn args أننا نجتاز process.env بالكامل أعلى السياق التلقائي ، فربما يمكن أن يحدد الخيار الذي نضيفه لتمرير متغيرات env خاصة تلقائيًا؟

أنا (أحد المارة المهتمين) أؤيد بإخلاص حل "تخزين الوسائط في ملف". نعم ، إنه تغيير جذري ، لكنه تغيير جذري تحتاجه .

تضمين التغريدة

لإلغاء حظر هذا البرنامج المساعد يفعل نفس الشيء

للتوضيح ، لاستخدام هذا ، أقوم فقط بحفظه في الريبو الخاص بي (non-Node / NPM / TypeScript) وقم بتعيين "plugins": ["path/to/file"] في ملف التكوين الخاص بي ، أو هل هناك المزيد؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات