为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 require("perf_hooks") 失败?

为什么 require("perf_hooks") 失败?

HUWWW 2023-07-20 14:27:53
根据我的理解,“perf_hooks”是 Node.js 的一部分。但是,当使用npm test它进行测试时,我会失败,并出现以下情况(某些文件名已更改):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 ..)它会按预期工作。任何建议表示赞赏。附言。Node比较新鲜:> node --versionv14.8.0
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

这是一个“沙盒模块”2.0.3 问题,已在 2.0.4 中修复。



查看完整回答
反对 回复 2023-07-20
?
翻阅古今

TA贡献1780条经验 获得超5个赞

perf_hooks确实在那个版本的 Node.js 中。在 14.8.0 中,当找不到模块时require()抛出MODULE_NOT_FOUND(而不是),因此问题是其他问题。ENOENT

如果确实是require()线路在抛出,那么它很可能已经require()被猴子修补了。如果他们修补了require()但没有module.require(),您可以尝试更改require()module.require()in lib/profiler.js

编辑:正如OP所建议的,sandboxed-module可能是罪魁祸首,因为它扰乱了模块加载。他们报告说它已在 2.0.4 中修复,但根据修复的存储库信息,它似乎已在 2.0.1 中修复。不管怎样,更新到 2.0.4(或更高版本,但这是撰写本文时的最新版本)是 👍。


查看完整回答
反对 回复 2023-07-20
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信