HUWWW
2023-07-20 14:27:53
根據(jù)我的理解,“perf_hooks”是 Node.js 的一部分。但是,當(dāng)使用npm test它進(jìn)行測(cè)試時(shí),我會(huì)失敗,并出現(xiàn)以下情況(某些文件名已更改):Error: ENOENT: no such file or directory, open 'perf_hooks' at Object.openSync (fs.js:465:3) at Object.readFileSync (fs.js:368:35) at SandboxedModule._getCompileInfo (node_modules/sandboxed-module/lib/sandboxed_module.js:265:20) at SandboxedModule._compile (node_modules/sandboxed-module/lib/sandboxed_module.js:245:22) at createInnerSandboxedModule (node_modules/sandboxed-module/lib/sandboxed_module.js:183:23) at SandboxedModule.RecursiveRequireProxy (node_modules/sandboxed-module/lib/sandboxed_module.js:214:27) at /Users/asmirnov/Documents/blabla2.js:51:12 at Object.<anonymous> (lib/profiler.js:53:3) at SandboxedModule._compile (node_modules/sandboxed-module/lib/sandboxed_module.js:251:19) at createInnerSandboxedModule (node_modules/sandboxed-module/lib/sandboxed_module.js:183:23) at SandboxedModule.RecursiveRequireProxy (node_modules/sandboxed-module/lib/sandboxed_module.js:214:27) at Object.<anonymous> (lib/blabla1.js:29:20) at SandboxedModule._compile (node_modules/sandboxed-module/lib/sandboxed_module.js:251:19) at createInnerSandboxedModule (node_modules/sandboxed-module/lib/sandboxed_module.js:183:23) at SandboxedModule.RecursiveRequireProxy (node_modules/sandboxed-module/lib/sandboxed_module.js:214:27) at SandboxedModule.requireInterceptor (node_modules/sandboxed-module/lib/sandboxed_module.js:227:9) at Context.<anonymous> (test/blabla1.js:73:22) at processImmediate (internal/timers.js:458:21)lib/profiler.js這是使用它的文件 ( ) 的一部分:const {performance, PerformanceObserver} = (function(){ try { if (window && typeof window.performance == "undefined") throw new TypeError(); return window; } catch (e) { return require("perf_hooks"); }})();可以有什么理由呢?然而,在某些情況下(npm run ..)它會(huì)按預(yù)期工作。任何建議表示贊賞。附言。Node比較新鮮:> node --versionv14.8.0
2 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
perf_hooks
確實(shí)在那個(gè)版本的 Node.js 中。在 14.8.0 中,當(dāng)找不到模塊時(shí)require()
拋出MODULE_NOT_FOUND
(而不是),因此問(wèn)題是其他問(wèn)題。ENOENT
如果確實(shí)是require()
線路在拋出,那么它很可能已經(jīng)require()
被猴子修補(bǔ)了。如果他們修補(bǔ)了require()
但沒(méi)有module.require()
,您可以嘗試更改require()
為module.require()
in?lib/profiler.js
。
編輯:正如OP所建議的,sandboxed-module
可能是罪魁禍?zhǔn)祝驗(yàn)樗鼣_亂了模塊加載。他們報(bào)告說(shuō)它已在 2.0.4 中修復(fù),但根據(jù)修復(fù)的存儲(chǔ)庫(kù)信息,它似乎已在 2.0.1 中修復(fù)。不管怎樣,更新到 2.0.4(或更高版本,但這是撰寫(xiě)本文時(shí)的最新版本)是 ??。
添加回答
舉報(bào)
0/150
提交
取消