Auto: Tentukan penyebab spawnSync auto-exec /bin/sh E2BIG

Dibuat pada 12 Jun 2020  ·  6Komentar  ·  Sumber: intuit/auto

Jelaskan bugnya

Saat ini build terbaru saya gagal pada langkah rilis dengan kesalahan E2BIG . Saya telah melakukan beberapa penelitian dan menemukan ini dapat disebabkan oleh beberapa alasan seperti banyak argumen perintah (sepertinya tidak terjadi di sini) atau teks yang terlalu besar.

Saya merasa ini mungkin yang terakhir, tetapi saya tidak yakin bagaimana cara men-debug masalah ini.

Saya akan mencoba pekerjaan sementara dan mengomentari baris auto-exec saya , tetapi ada saran yang diterima!

Untuk Mereproduksi

Mencoba mencari tahu itu sekarang.

Perilaku yang diharapkan

Sebutkan file yang bermasalah, atau tidak membuat kesalahan

Informasi lingkungan:

Gitlab CI & Lokal (mesin linux lengkung)

Konteks tambahan

Saya tidak berpikir ini harus karena otomatis. Kemungkinan besar masalah spawn, baru saja berpikir akan sangat membantu untuk memposting di sini untuk siapa saja yang mengalami masalah serupa di masa depan, dan untuk brainstorming ide debugging.

bug hacktoberfest

Komentar yang paling membantu

Solusinya adalah menyimpan argumen di suatu tempat di disk dan membiarkan perintah menarik dari sana alih-alih env var. Tapi itu perubahan yang cukup besar untuk plugin

Untuk membuka blokir Anda, plugin ini melakukan hal yang sama

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", "."]);
    });
  }
};

Semua 6 komentar

Saya pikir ini mungkin kesalahan fatal pada plugin exec .

E2BIG berarti ada terlalu banyak argumen untuk panggilan execSync . Saya cukup yakin bahwa argumen yang dibicarakannya hanya semua info kait yang kami berikan melalui variabel env ( $ARG0 ).

Saya tidak begitu yakin apakah ini sesuatu yang bahkan bisa kita perbaiki. Mungkin harus mendokumentasikan batasan ini dan bahkan mungkin menambahkan opsi untuk tidak meneruskan informasi kontekstual.

Solusinya adalah menyimpan argumen di suatu tempat di disk dan membiarkan perintah menarik dari sana alih-alih env var. Tapi itu perubahan yang cukup besar untuk plugin

Untuk membuka blokir Anda, plugin ini melakukan hal yang sama

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", "."]);
    });
  }
};

Jika Anda dapat menemukan solusi untuk E2BIG, itu akan luar biasa! (atau siapa pun yang melihat masalah ini)

Saya pasti akan memikirkannya, pasti ada cara untuk mengatasinya. Terima kasih!

Saya melihat di daftar args execSpawn kami melewati process.env sepenuhnya di atas konteks otomatis, mungkin opsi yang kami tambahkan dapat menentukan untuk hanya meneruskan env vars khusus otomatis?

Saya (penonton yang tertarik) dengan sepenuh hati mendukung solusi "menyimpan argumen dalam file". Ya, ini adalah perubahan besar, tetapi perubahan besar yang Anda butuhkan .

@hipstersmoothie

Untuk membuka blokir Anda, plugin ini melakukan hal yang sama

Agar jelas, untuk menggunakan ini, saya cukup menyimpannya di repo (non-Node/NPM/TypeScript) saya dan mengatur "plugins": ["path/to/file"] di file konfigurasi saya, atau adakah lebih dari itu?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat