我正在尝试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上使用Regenerator运行时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32185485/