gpt4 book ai didi

javascript - 将再生器运行时与 NodeJS 结合使用

转载 作者:行者123 更新时间:2023-12-02 15:46:11 25 4
gpt4 key购买 nike

我正在尝试require regeneratorRuntime 对象,以便它在全局范围内可用,这样我的 Node.js 代码就可以与 babel 在我的应用程序中的任何地方为我转换的任何异步函数/生成器一起使用。 regenerator 是通过 npm npm install regenerator 安装的。

我的问题是,为什么这段代码

require('regenerator/runtime');

console.log(typeof regenratorRuntime);
if (typeof regenratorRuntime === 'object'){
console.log(typeof regenratorRuntime.wrap);
console.log(typeof regenratorRuntime.awrap);
console.log(typeof regenratorRuntime.async);
console.log(typeof regenratorRuntime.mark);
}

未按预期工作,导致记录未定义,同时将第一行替换为

global.regenratorRuntime = require('regenerator/runtime');

带来预期的结果。

查看运行时文件,我看到了这段代码

runtime = global.regeneratorRuntime = inModule ? module.exports : {};

在 IIFE 中,将此表达式作为 global 传入

(
// Among the various tricks for obtaining a reference to the global
// object, this seems to be the most reliable technique that does not
// use indirect eval (which violates Content Security Policy).
typeof global === "object" ? global :
typeof window === "object" ? window :
typeof self === "object" ? self : this
);

我希望在全局对象上正确设置regenratorRuntime

我不介意手动设置global.regenratorRuntime,但我想了解为什么它是必要的。似乎 Node 从 require 语句执行的代码的行为可能与我假设的不同。

作为一个辅助问题,任何人都可以指出 self 检查正在检查什么吗?

最佳答案

确实设置了

global.regeneratorRuntime
// ^

不是

global.regenratorRuntime

关于javascript - 将再生器运行时与 NodeJS 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32185485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com