Javascript 为什么require(“性能挂钩”)失败?

Javascript 为什么require(“性能挂钩”)失败?,javascript,npm,chromium,benchmarking,Javascript,Npm,Chromium,Benchmarking,据我所知,“perf_hooks”是Node.js的一部分。但是,当使用npm test进行测试时,我会失败,原因如下(某些文件名已更改): 原因是什么?但是,在某些场景中(npm run..),它可以按预期工作。如有任何建议,我们将不胜感激 PS.节点相对较新: > node --version v14.8.0 perf_hooks确实在该版本的Node.js中。在14.8.0中,require()在找不到模块时抛出MODULE\u NOT\u FOUND(而不是enoint),因此问

据我所知,“perf_hooks”是Node.js的一部分。但是,当使用
npm test
进行测试时,我会失败,原因如下(某些文件名已更改):

原因是什么?但是,在某些场景中(
npm run..
),它可以按预期工作。如有任何建议,我们将不胜感激

PS.节点相对较新:

> node --version
v14.8.0

perf_hooks
确实在该版本的Node.js中。在14.8.0中,
require()
在找不到模块时抛出
MODULE\u NOT\u FOUND
(而不是
enoint
),因此问题出在其他方面

如果抛出的肯定是
require()
行,那么似乎
require()
已经被猴子补丁了。如果它们修补了
require()
而不是
module.require()
,您可以尝试在
lib/profiler.js
中将
require()
更改为
module.require()


编辑:正如OP所建议的,
沙盒模块
很可能是罪魁祸首,因为它扰乱了模块加载。他们报告说它在2.0.4中是固定的,但基于,它似乎在2.0.1中是固定的。无论如何,更新到2.0.4(或更高版本,但这是本文撰写时的最新版本)是
perf_hooks
确实在Node.js的版本中。在14.8.0中,
require()
在找不到模块时抛出
MODULE\u NOT\u FOUND
(而不是
enoint
),因此问题出在其他方面

如果抛出的肯定是
require()
行,那么似乎
require()
已经被猴子补丁了。如果它们修补了
require()
而不是
module.require()
,您可以尝试在
lib/profiler.js
中将
require()
更改为
module.require()


编辑:正如OP所建议的,
沙盒模块
很可能是罪魁祸首,因为它扰乱了模块加载。他们报告说它在2.0.4中是固定的,但基于,它似乎在2.0.1中是固定的。不管怎样,更新到2.0.4(或更高版本,但这是本文撰写时的最新版本)都是这是一个在2.0.4中修复的“沙盒模块”2.0.3问题。

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

这很奇怪,说它应该位于
lib/perf_hooks.js
中,但是在我的安装中,这个文件也丢失了
perf_hooks
确实在Node.js的那个版本中。在14.8.0中,
require()
在找不到模块时抛出
MODULE\u NOT\u FOUND
(而不是
enoint
),因此问题出在其他方面。这很奇怪,说它应该位于
lib/perf\u hooks.js
中,但在我的安装中,这个文件也丢失了
perf\u hooks
确实在Node.js的版本中。在14.8.0中,
require()
在找不到模块时抛出
MODULE\u NOT\u FOUND
(而不是
enoint
),因此问题出在其他方面。MODULE.require()并没有帮上忙。若我创建了“lib/perf_hooks.js”,它会自动拾取,否则就找不到节点的那个一个。是否存在任何可能的“沙盒模块”问题?>他们报告说它已在2.0.4中修复。实际上是我报告说它解决了这个问题。我查看了更改的内容(3次提交),并没有了解它是如何坦率地修复的。所以它可能会发生,它与smth其他相关,但它实际上对我有效。如果您能解释为什么它会有帮助,请告诉我。module.require()并没有帮到您。若我创建了“lib/perf_hooks.js”,它会自动拾取,否则就找不到节点的那个一个。是否存在任何可能的“沙盒模块”问题?>他们报告说它已在2.0.4中修复。实际上是我报告说它解决了这个问题。我查看了更改的内容(3次提交),并没有了解它是如何坦率地修复的。所以它可能会发生,它与smth其他相关,但它实际上对我有效。如果你能解释为什么它有用,请告诉我。很好!FWIW,基于,我认为该缺陷在2.0.0中,并在2.0.1及更高版本中修复。但不管怎样,我在吹毛求疵,而且可能是错的。很好!FWIW,基于,我认为该缺陷在2.0.0中,并在2.0.1及更高版本中修复。但不管怎样,我在吹毛求疵,而且可能是错的。
const {performance, PerformanceObserver} = (function()
{
  try
  {
    if (window && typeof window.performance == "undefined")
      throw new TypeError();
    return window;
  }
  catch (e)
  {
    return require("perf_hooks");
  }
})();
> node --version
v14.8.0