Sentry-javascript: ノヌド10.13.0で@sentry / nodeメモリリヌク

䜜成日 2018幎11月22日  Â·  50コメント  Â·  ゜ヌス: getsentry/sentry-javascript

パッケヌゞ+バヌゞョン

  • [x] @sentry/browser
  • [x] @sentry/node

バヌゞョン

4.3.4

説明

歩哚をああnext.jsプロゞェクトに統合しおみたした。 このテンプレヌトhttps://github.com/sheerun/next.js/tree/with-sentry-fix/examples/with-sentryを䜿甚しお詊しおみたずころ、歩哚のメモリリヌクず思われるものが芋぀かりたした。 このプロゞェクトをチェックアりトしおmemwatchを远加する堎合

if (!dev) {
  memwatch.on("leak", info => {
    console.log("memwatch::leak");
    console.error(info);
  });

  memwatch.on("stats", stats => {
    console.log("memwatch::stats");
    console.error(Util.inspect(stats, true, null));
  });
}

リク゚ストでサヌバヌを攻撃し、次のリ゜ヌスをリク゚ストしたした。

    "/",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_app.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_error.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/index.js",
    "/_next/static/runtime/main-1eaa6d1d0c8e7d048efd.js",
    "/_next/static/chunks/commons.b34d260fee0c4a698139.js",
    "/_next/static/runtime/webpack-42652fa8b82c329c0559.js"

これにより、メモリ䜿甚量は私にずっお際限なく増えたす。 server.jsからrequestずerrorHandlerを削陀するずすぐに、メモリリヌクが停止したす。 だからそれら2に接続されおいるようです

In Progress Bug

最も参考になるコメント

@michalkvasnicak私はこれを調査したしたが、Sentryが盎接原因ではありたせん。

@sentry/nodeトランスポヌトはhttps-proxy-agentに䟝存しおおり、 agent-base䟝存しおいるため、 patch-core.jsファむルが必芁です。これがリヌクの原因ですshrug

https://github.com/TooTallNate/node-agent-base/issues/22

その内容をテストにコピヌし、ヒヌプ統蚈を䜿甚しお実行するこずで、これを簡単に確認できたす。

const url = require("url");
const https = require("https");

https.request = (function(request) {
  return function(_options, cb) {
    let options;
    if (typeof _options === "string") {
      options = url.parse(_options);
    } else {
      options = Object.assign({}, _options);
    }
    if (null == options.port) {
      options.port = 443;
    }
    options.secureEndpoint = true;
    return request.call(https, options, cb);
  };
})(https.request);

https.get = function(options, cb) {
  const req = https.request(options, cb);
  req.end();
  return req;
};

it("works", () => {
  expect(true).toBe(true);
});

おそらくそれをフォヌクするか、回避策を曞く必芁がありたす。

党おのコメント50件

@abraxxasこの問題の再珟を手䌝っおもらえたすか このメモリリヌクをどの皋床正確にトリガヌしおいたすか
私は運が悪かったのであなたの説明を詊したした、それはただ統蚈むベントを生成したす、決しおそれを挏らしたせん。

@kamilogorekご回答ありがずうございたす。 私がしたこずは次のずおりでした。 この䟋https://github.com/sheerun/next.js/tree/with-sentry-fix/examples/with-sentryをチェックアりトし、server.jsにmemwatchを远加したした

if (!dev) {
  memwatch.on("leak", info => {
    console.log("memwatch::leak");
    console.error(info);
  });

  memwatch.on("stats", stats => {
    console.log("memwatch::stats");
    console.error(Util.inspect(stats, true, null));
  });
}

次に、ノヌド10.xを䜿甚しお䟋を実行し8.xiではメモリの問題は芳察されたせんでした、ガトリングテストスむヌトを䜿甚しお次のリ゜ヌスを芁求したした。

    "/",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_app.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/_error.js",
    "/_next/static/r1zovjaZ1TujaA0hJEp91/pages/index.js",
    "/_next/static/runtime/main-1eaa6d1d0c8e7d048efd.js",
    "/_next/static/chunks/commons.b34d260fee0c4a698139.js",
    "/_next/static/runtime/webpack-42652fa8b82c329c0559.js"

ハッシュが倉曎される可胜性があるこずに泚意しおください

しかし、このアプロヌチで同じ結果を非垞に簡単に達成できるはずですhttps://www.simonholywell.com/post/2015/06/parallel-benchmark-many-urls-with-apachebench/

数千回のリク゚ストの埌、メモリ䜿甚量はほが1GBになり、アむドリング時でも枛少するこずはありたせんでした。 server.jsからrequestずerrorHandlerを削陀するずすぐに、メモリリヌクが停止したす。 したがっお、それらの2に接続されおいるようです。リク゚ストが少なすぎるか、ノヌド8.xを䜿甚した可胜性がありたすか

@abraxxasが確認されたした。 ノヌド10+各リ゜ヌスの〜300reqがゞョブを実行したす。 さらに調査したす。 ありがずう

@kamilogorek興味深いですが、あなたがあなたの
再珟するず、ハンドラヌなしで玄20MBに留たるこずがわかりたす
しかし、それらずずもに急速に増加したす。

ハンドラヌなしのメモリリヌク譊告は、次の理由だけで発生するず思いたす
リク゚ストにより、䞀定のメモリ増加がありたす。

ずのバヌゞョン間でメモリ䜿甚量にただ倧きな違いがありたす
歩哚ずなし。

2018幎11月29日朚曜日、1245KamilOgórek< [email protected]は次のように曞いおいたす。

@abraxxas https://github.com/abraxxas正垞に再珟したしたが、
ただし、サヌバヌはそれ自䜓でリク゚ストオブゞェクトをリヌクしおいるようです。
セントリヌハンドラヌがなくおも。

https://streamable.com/bad9j

ドメむンず独自のスコヌプをアタッチするため、成長率は少し倧きくなりたす
リク゚ストに反察したすが、GCによるリク゚ストず䞀緒に利甚されたす。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/getsentry/sentry-javascript/issues/1762#issuecomment-442804709 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AIbrNlgPjPd5Jra1aahR-Dthf7XvbCexks5uz8jjgaJpZM4YvOA2
。

@abraxxasは私の前のコメント私が削陀したものを無芖したす、それは完党に私たちの偎にありたす:)

これは、ノヌドのコア自䜓の問題のようです。 このコメントを参照しおくださいhttps://github.com/getsentry/sentry-javascript/issues/1762#issuecomment-444126990

@kamilogorekこれを調べる機䌚は

https://github.com/getsentry/sentry-javascript/blob/c27e1e32d88cc03c8474fcb1e12d5c9a2055a150/packages/node/src/handlers.ts#L233

怜査官はeventProcessorsリストに䜕千もの゚ントリを瀺したした
image

物事がどのように蚭蚈されおいるかに぀いおのコンテキストはありたせんが、リク゚ストのスコヌプが正しくなく、間違ったメタデヌタが提䟛されおいるこずに気付きたした1773を参照。そのため、すべおがグロヌバル状態で管理されおおり、リク゚ストは終了したす

@ abraxxas @ tpbowdenノヌドのコア自䜓のドメむンモゞュヌルのリヌクに問題がありたす。 それを監芖し続け、コアで修正される前に䞀時的な解決策を考え出すようにしたす。 関連する問題 https 

@kamilogorekこれに察する回避策たたは䞀時的な修正に぀いお䜕かアむデアはありたすか ノヌドの問題の進行は非垞に遅いようです

珟圚、メモリが特定のしきい倀に達したずきにNode.jsプロセスを再起動するためにPM2を䜿甚しおいたす。 https://pm2.io/doc/en/runtime/features/memory-limit/#max -memory-threshold-auto-reload

ナニットテストにラボを䜿甚する。 挏れはただ存圚しおいたす。 リヌクはデバッグが難しい堎合があるこずを私は知っおいたす。 修正のためのETAはありたすか

1぀のテストが完了したした
テスト期間1832ミリ秒
次のリヌクが怜出されたした。

npm ERR コヌドELIFECYCLE
npm ERR errno 1
npm ERR [email protected]テスト lab build/test
npm ERR 終了ステヌタス1
npm ERR
npm ERR [email protected]テストスクリプトで倱敗したした。
npm ERR これはおそらくnpmの問題ではありたせん。 䞊蚘の远加のログ出力がある可胜性がありたす。

npm ERR この実行の完党なログは、次の堎所にありたす。
npm ERR /Users/sunknudsen/.npm/_logs/2019-02-13T14_41_28_595Z-debug.log

@sunknudsenこの問題は実際にはNodeJSで修正されおいたす。https//github.com/nodejs/node/issues/23862およびhttps://github.com/nodejs/node/pull/25993を参照しお

@garthenwebパッケヌゞの開発方法が原因で、これは@sentry/node圱響したすか 私がhapiで開発しおいるそしお他の倚くの䟝存関係に䟝存しおいるプロゞェクトの1぀は、リヌクを生成したせん少なくずも、ラボでは怜出されたせん。

@sunknudsen倚かれ少なかれ。 私が理解しおいる限り、これは非掚奚のドメむンパッケヌゞずpromiseの組み合わせです。 https://github.com/getsentry/sentry-javascript/blob/master/packages/node/src/handlers.ts#L233を参照しお

私の堎合、歩哚ミドルりェアを゚クスプレスサヌバヌから削陀しお修正したした。

これはノヌドでは問題ではありたせんが、Sentryハンドラヌを無効にするず問題が修正されるため、Sentryでは問題になりたす。

image

@MartijnHols珟圚、SDKのメモリフットプリントを倧幅に削枛するメゞャヌリリヌスに取り組んでいたす。 冒険心があれば、 https//github.com/getsentry/sentry-javascript/pull/1919を詊しおみお

@HazATおかげで、昚倜グラフの23:10に本番

image

@MartijnHols詊しおいただきありがずうございたす

芚えおおくべき2぀のこずは、ノヌド内のドメむンのメモリリヌク修正が、ノヌドに最近11.10着陞したこずです。
たた、 latestタグが誀っお付けられたため、 5.0.0-beta1を非公開にする必芁がありたした。 5.0.0-rc.1が最新のnextバヌゞョンになりたした。
5.0.0-rc.1を詊しおみおください。むベントのキュヌに入れる方法を少し倉曎したした。これにより、負荷/メモリが倧幅に改善されたす。

ノヌド11.12に曎新するず、メモリずCPUの䜿甚量が安定したようです。 ハンドラヌを無効にした堎合ず比范した堎合、リ゜ヌスの䜿甚量に認識できる違いはないようです。おそらく少しだけ良いでしょう。 たた、必芁なすべおの情報で゚ラヌをうたくキャッチしおいるようですコン゜ヌルの「ブレッドクラム」がもっずあるかもしれたせん。 5.0.0に぀いお他に䜕を確認できるかわかりたせん。 問題が発生した堎合はお知らせしたすが、おそらくそうではありたせん。

LGTM。 ありがずう

これも詊しおみおください。 @HazAT 11.10の修正がアクティブなLTSリリヌス10.xすでにバックポヌトされおいるかどうか知っおいたすか

@adriaanmeuris誰かが10.xにバックポヌトするかどうか尋ねたのを読みたしたが、そうするかどうかはわかりたせん。
参照 https 

゚クスプレスミドルりェアでクラむアントずスコヌプを手動で䜜成する問題を解決したした

関数を゚クスポヌトするファむルservices/sentryを䜜成したした

import {
  NodeClient as SentryClient, Hub, Integrations, Scope,
} from '@sentry/node';
import config from 'config';

const sentryClient = new SentryClient({
  ...config.sentry,
  frameContextLines: 0,
  integrations: [new Integrations.RewriteFrames()],
});

export default () => {
  const scope = new Scope();
  const client = new Hub(sentryClient, scope);
  return Object.freeze({ client, scope });
};

ミドルりェアでは、歩哚クラむアント/スコヌプを次のようにリク゚ストオブゞェクトに保存したす

app.use((req, res, next) => {
  req.sentry = getSentry();
  req.sentry.scope.setTag('requestId', req.requestId);
  req.sentry.scope.setExtra('More info', 'XXXXXX');
  next();
});
....
// and use the express error handler
app.use((err, req, res, next) => {
  const code = err.code || 500;
  res.status(code).json({
    code,
    error: err.message,
  });
  if (code >= 500) {
    req.sentry.client.captureException(err);
  }
  next();
});

これでメモリリヌクが修正されたようです

image

@coudsこの実装は本圓に玠晎らしいです、あなたが考慮しなければならないこずが1぀ありたす。

リク゚ストごずに新しいクラむアントが取埗され、グロヌバル゚ラヌ/自動ブレッドクラムたたはデフォルトの統合が行うその他の機胜は怜出されたせん。

@HazATありがずう、私はそれを知っおいたすが、支払うべき小さな䟡栌です。 その巚倧なメモリリヌクを解決するために、しかしこの損倱を最小限に抑えるために、私はいく぀かのこずをしたした。

  1. unCoughException / promiseむベントに䟝存しないように蚭定したすべおの䟋倖を凊理しようずしおいたす。
  2. ブレッドクラムの堎合、reqオブゞェクトにアクセスできる限り、手動で远加したす。
  3. @sentry/webpack-plugin䜿甚しお゜ヌスマップを歩哚にアップロヌドしたす
  4. 問題の特定に圹立぀すべおのリク゚ストにタグ/远加を远加したす

もう1぀、トランザクションである远加するタグをもう1぀貌り付けるのを忘れたしたデフォルトのハンドラヌをシミュレヌトするため

req.sentry.scope.setTag('transaction', `${req.method}|${req.route ? req.route.path : req.path}`);

これが誰かの助けになるこずを願っおいたす。Sentryは本圓に玠晎らしいツヌルであり、スタックから削陀されないようにできる限りのこずをしたした。

@HazAT @kamilogorek [email protected]ず[email protected]ただメモリが倧幅に増加しおいたす-このnodejsパッチで修正されたず確信しおいたすか

@tpbowden再珟を提䟛するか、少なくずもコヌドがどのように芋えるかを教えおください。
たた、Sentryに関連する他のプラグむンを䜿甚しおいたすか

@HazAT再珟しようずしたしたが、倚くのミドルりェアを備えたかなり耇雑なサヌバヌが原因ですサヌバヌ偎のレンダリングReact。 Sentryミドルりェアをむンストヌルするず、メモリが倧幅に増加したす高負荷の堎合、最倧10MB /秒増加する可胜性がありたす。 サヌバヌからSentry.Handlers.requestHandler()ミドルりェアを削陀するず、メモリは玄200MBで䞀定になりたす

プラグむンは䜿甚しおおらず、 @sentry/nodeのみを䜿甚しおいたす。 これを再珟するために私ができるこずは䜕か考えられたすか

@HazATサヌバヌ䞊でwebpackを䜿甚しおSentryをバンドルするこずに関連しおいるようです-アプリがWebpackによっおビルドされおいる堎合にのみ発生したす。 @sentry/nodeをexternals远加するず、メモリの問題が修正されたした。 なぜこれが起こるのか考えはありたすか

リヌクは、@ sentry / node5.1.0を䜿甚しおノヌド11.14.0で匕き続き再珟可胜です。

私たちにずっお、リヌクは@ sentry / nodeずi18next-express-middlewareの間の盞互䜜甚によっお匕き起こされたす。 Expressアプリはhttps://github.com/i18next/react-i18next/blob/master/example/razzle-ssr/src/server.jsに䌌おい

.use(Sentry.Handlers.requestHandler()); .use(i18nextMiddleware.handle(i18n))䞊に眮くず、メモリリヌクが発生したす。 その䞋に歩哚を眮いおも、挏れはありたせん。

同じ問題がありたす。 node 10.15.3ず11.14.0詊しおみたした。 これは、問題を再珟するための最小限のリポゞトリですhttps://github.com/michalkvasnicak/sentry-memory-leak-reproduction。 yarn testたたはyarn test:watchを実行するだけで、ヒヌプの䜿甚状況が報告されたす。 垞に増加したす。

yarn test
image

yarn test:watch

image

image

@michalkvasnicak䟋を䜜成するために時間を

SDKに関しお実際には䜕もテストしおいたせん

const Sentry = require('@sentry/node');

it('works', () => {
  expect(true).toBe(true);
});

パッケヌゞが必芁ですが、それだけです。
jestでリヌクテストを実行した経隓がないのでわかりたせんが、パッケヌゞを芁求するだけで䜕がリヌクする可胜性がありたすか
確かではありたせんが、䜕かが足りないかもしれたせんが、新しいパッケヌゞをロヌドするずメモリが増えるず思いたす。

リヌクする可胜性のあるものに関しおは、いく぀かのグロヌバル倉数を䜜成したすが、状態を远跡するためにそれらが必芁です。

@HazATはい、それは奇劙ですが、テストをリヌクさせるのに十分です。 jestはリヌクが怜出されお倱敗したす。 コヌドベヌスにも同じ問題があり、 @sentry/nodeのむンポヌトにコメントするだけで、リヌクの問題が解決したした。

@michalkvasnicak私はこれを調査したしたが、Sentryが盎接原因ではありたせん。

@sentry/nodeトランスポヌトはhttps-proxy-agentに䟝存しおおり、 agent-base䟝存しおいるため、 patch-core.jsファむルが必芁です。これがリヌクの原因ですshrug

https://github.com/TooTallNate/node-agent-base/issues/22

その内容をテストにコピヌし、ヒヌプ統蚈を䜿甚しお実行するこずで、これを簡単に確認できたす。

const url = require("url");
const https = require("https");

https.request = (function(request) {
  return function(_options, cb) {
    let options;
    if (typeof _options === "string") {
      options = url.parse(_options);
    } else {
      options = Object.assign({}, _options);
    }
    if (null == options.port) {
      options.port = 443;
    }
    options.secureEndpoint = true;
    return request.call(https, options, cb);
  };
})(https.request);

https.get = function(options, cb) {
  const req = https.request(options, cb);
  req.end();
  return req;
};

it("works", () => {
  expect(true).toBe(true);
});

おそらくそれをフォヌクするか、回避策を曞く必芁がありたす。

これの回避策はありたすか

https://nodejs.org/en/blog/release/v10.16.0/

いく぀かのメモリリヌクを修正したした、誰かがそれをテストできたすか

ノヌド11.10でも同じ問題が発生したすが、ノヌド12.3.1で修正されおいるようです。

agent-base問題に぀いおオヌプンなPRがありたす //github.com/TooTallNate/node-agent-base/pull/25

これをフォヌクしおYarn解像床の䟝存関係をオヌバヌラむドするか、マヌゞする方法を芋぀けるこずができたす。

少しオフトピックかもしれたせんが、Handlers.tsにドメむンのクリヌンアップがなく、domain.createのみであるずいうリヌクが発生する可胜性もありたすか
䞭皋床の蚘事たたはSOは、removeListenersずdomain.exitが必芁であるこずを瀺唆しおいたす。 しかし、それに察する決定的な答えは芋぀かりたせんでした。

曎新ハンドラヌがdomain.exitを内郚的に呌び出すdomain.runを䜿甚しおいるこずがわかりたした。 それでもリスナヌ/゚ミッタヌを削陀するず違いが生じる可胜性がありたすが、正盎なずころわかりたせん。

Node 12.4.0にアップグレヌドしたしたが、Sentryに関連しおいるように芋える悪い動䜜がただ芋られたす。

これは、90秒以䞊--autocannonオプションを䜿甚しお実行されたノヌドクリニックドクタヌの実行です。

リク゚ストハンドラヌが配眮されおいる堎合にのみ、実際にリヌクが発生するように芋えたす。 ハンドラヌなしの実行でGCトラフの底を芋るず、それらはすべおほが同じレベル65〜70 mbにあり、ハンドラヌを䜿甚した実行では、GCサむクルごずに玄5mb䞊昇しおいるように芋えたす。

@ tstirrat15この修正はただリリヌスされおいないため、おそらくこの問題がただ発生しおいるのはそのためです。 それがオプションである堎合、最新のマスタヌから詊すこずができたすか

@ tstirrat15修正が含たれおいる5.4.2がリリヌスされたした、詊しおみおください:)

これは、v5.4.2を配眮した別の実行です。 それはただ少し挏れおいるようです...

GCは垞に正しく起動し、メモリをベヌスラむンに埩元したす。 メモリ䜿甚量の増加は、むベントおよびむベントキュヌから収集されたブレッドクラムによっお匕き起こされたすが、100ブレッドクラムで停止し、それ以䞊増加するこずはありたせん。 15〜30分のダンプのように衚瀺され、ピヌクメモリがある時点で停止するかどうかを確認できれば䟿利です。

うヌん...いいですね。 このPRを本番環境に移行し、動䜜が倉化するかどうかを確認したす。 ありがずうございたした

サヌバヌでwebpackを䜿甚しおSentryをバンドルするこずに関連しおいるようです。これは、アプリがWebpackによっおビルドされおいる堎合にのみ発生したす。 @ sentry / nodeを倖郚に远加するず、メモリの問題が修正されたした。 なぜこれが起こるのか考えはありたすか

@tpbowdenあなたはこれに぀いお

サヌバヌバンドル内のすべおの䟝存関係をwebpackにバンドルしおいたす。 このようにしお、node_modulesなしでDockerむメヌゞを出荷できたすが、䜕かが歩哚SDKを台無しにしおおり、この方法でバンドルするずメモリリヌクが発生したす。

いく぀かの最適化プロセスによっお䜜成されたバグである可胜性がありたす。 私の倧げさな掚枬は、それはおそらくより簡朔だずいうこずです。 いく぀かの最適化はおそらくドメむンモゞュヌルの䜿甚法を台無しにしおおり、 scope.addEventProcessor枡されたコヌルバックのクロヌゞャはもはやガベヌゞコレクションではないため、行われたすべおの芁求はかなりの量のメモリをリヌクしおいたす。

たた、webpack / terserバヌゞョンより少し遅れおいるrazzle.jsを䜿甚しおいたすが、おそらくすでに修正されおいたす。

これはもはや歩哚偎のバグではないようです。 私はこれを匕き続き調査し、必芁に応じお問題を開き、このスレッドを最新の状態に保ちたす。

これはもはや歩哚偎のバグではないようです。 私はこれを匕き続き調査し、必芁に応じお問題を開き、このスレッドを最新の状態に保ちたす。

投皿しおください、ありがずうございたす

@kamilogorekコヌドのどこでScopeむンスタンス内の_eventProcessors配列に远加されたむベントプロセッサコヌルバックが削陀されるかを教えおください。 芋぀かりたせん。 すべおのリク゚ストがこの配列にむベントプロセッサコヌルバックを远加しおいるようで、削陀されるこずはありたせん。 それらがどのように削陀されるのかを知っおいれば、バグをよりよく理解するのに圹立぀かもしれたせん。

Screen Shot 2020-03-23 at 15 49 03

それずも、リク゚ストごずに䞀意でガベヌゞコレクションされるはずのスコヌプ党䜓ですか 各リク゚ストは同じスコヌプむンスタンスを取埗しおいるようです🀔

それずも、リク゚ストごずに䞀意でガベヌゞコレクションされるはずのスコヌプ党䜓ですか

それは正しいです。 ただし、 scopeは、新しいdomainむンスタンスごずに耇補する必芁がありたす🀔

このコヌルスタックを参照しおください。

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/node/src/handlers.ts#L319 -L328

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/src/hub.ts#L442 -L457

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/src/hub.ts#L463 -L488

https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/src/hub.ts#L479

ハ 私は䜕か芋぀けたず思う。

dynamicRequireを䜿甚したす。
https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/hub/src/hub.ts#L465-L468

しかし、dynamicRequireコヌドにステップむンするず
https://github.com/getsentry/sentry-javascript/blob/fd26d9fa273002502706b03fc1a9a46864cd8440/packages/utils/src/misc.ts#L28-L31

requireはmodでは未定矩です🀯

したがっお、 getHubFromActiveDomain関数のcatchブロックに入り、代わりにgetHubFromCarrier()たす。

私のセットアップでは、_everyting_はwebpackにバンドルされおいるため、おそらくwebpackによっお壊れたmodオブゞェクトにいく぀かの仮定がありたす。 これをどのように修正できるかに぀いおのアむデアはありたすか 🀔

芁玄

dynamicRequireを䜿甚したす。
Screen Shot 2020-03-24 at 12 05 04

mod.requireは未定矩です
Screen Shot 2020-03-24 at 12 20 01

modオブゞェクトはどのように芋えたすか
Screen Shot 2020-03-24 at 12 20 38

最終的にgetHubFromCarrierを䜿甚したす。
Screen Shot 2020-03-24 at 12 21 22

node_modulesフォルダヌに盎接Hubモゞュヌルにパッチを手動で適甚したした。 dynamicRequireを䜿甚しお行を削陀し、ファむルの先頭にimport domain from 'domain';を远加したずころ、完党に機胜するようになりたした。 これ以䞊の挏れはありたせん 🎉

以前はdynamicRequireハックが必芁だったかもしれたせんが、新しいバヌゞョンのwebpackでは䞍芁になりたしたか 🀔

私も亀換しようずしたした

const domain = dynamicRequire(module, 'domain');

ず

const domain = require('domain');

そしおそれはたたうたく働きたす。 これらの2぀の゜リュヌションのどちらを奜むかわかりたせん。

この修正でPRを開きたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡