Node.js v10.3.0调用performance.now报错:TypeError: performance.now is not a function
问题原因及解决方案
这个错误的核心原因是Node.js v10.3.0中perf_hooks模块的导出结构和你预期的不一样。
在你的代码里,const performance = require('perf_hooks')拿到的是整个perf_hooks模块对象,而不是里面的performance实例——这个模块对象本身并没有now()方法,所以才会抛出TypeError: performance.now is not a function的错误。
你需要调整代码,从模块中正确提取出performance对象,有两种可行的方式:
方式1:解构赋值(推荐)
直接从模块中解构出performance对象,代码更简洁:
const { performance } = require('perf_hooks'); let p = performance.now(); console.log(p);
方式2:直接访问模块的performance属性
如果你不习惯解构,也可以先引入整个模块,再访问它的performance属性:
const perfHooks = require('perf_hooks'); let p = perfHooks.performance.now(); console.log(p);
额外补充:在更高版本的Node.js(比如v18+)中,performance对象可以直接从全局作用域获取,或者通过require('node:perf_hooks')的方式引入,但你的v10.3.0版本不支持这些特性,必须严格按照上面的方式来调用。
内容的提问来源于stack exchange,提问作者Some User
相关产品推荐
相关产品推荐

