我想require
的regeneratorRuntime對象,因此,它是全球可用的,所以我的Node.js的代碼將與任何異步函數/發電機巴貝爾transpiles隨時隨地在我的應用工作,爲我再生運行。 regenerator
通過npm npm install regenerator
安裝。與使用的NodeJS
我的問題是,爲什麼這個代碼
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
,但我想明白爲什麼它是必要的。看起來好像是從require
聲明執行的代碼節點可能與我所假設的行爲不同。
作爲輔助的事情,任何人都可以指出哪些self
檢查檢查?
'self'確實存在工人,其中'window'不 – Bergi