Good idea, but it doesn’t seem to work.
goog.Dependency.prototype.load has the following code which fails:
if (!goog.inHtmlDocument_()) {
goog.logToConsole_(
'Cannot use default debug loader outside of HTML documents.');
if (this.relativePath == 'deps.js') {
// Some old code is relying on base.js auto loading deps.js failing with
// no error before later setting CLOSURE_IMPORT_SCRIPT.
// CLOSURE_IMPORT_SCRIPT should be set *before* base.js is loaded, or
// CLOSURE_NO_DEPS set to true.
goog.logToConsole_(
'Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, ' +
'or setting CLOSURE_NO_DEPS to true.');
controller.loaded();
} else {
controller.pause();
}
return;
}
goog.inHtmlDocument_ tests for document.write.
> On Jul 11, 2021, at 1:00 PM, Edward Stangler <[email protected]> wrote:
>
>
> How about this? ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING
>
>
> https://github.com/google/closure-library/issues/844#issuecomment-331235307
>
> Looks like it's used in UIModuleUtils.as for its purpose, too.
>
>
>
> On 7/11/2021 4:08 AM, Harbs wrote:
>> We’ve been working on migrating a Royale project to Adobe’s UXP environment.
>>
>> Release build works, but debug build does not because of some of the inner
>> workings in the goog library.
>>
>> AIUI, the main blocker is:
>>
>> goog.inHtmlDocument_ = function() {
>> /** @type {!Document} */
>> var doc = goog.global.document;
>> return doc != null && 'write' in doc; // XULDocument misses write.
>> };
>>
>>
>> UXP does not have document.write so goog.addDependency, goog.require and
>> goog.base do not work correctly.
>>
>> I’ve also noticed that recently browsers seem to be taking much longer to
>> load scripts in debug mode. I suspect that’s because document.write is
>> deprecated.
>>
>> Because of this, I’d really like to explore removing the reliance on
>> document.write and instead write script tags to load the scripts (in the
>> correct order).
>>
>> We’re going to need to figure out what to do with goog.provide and
>> goog.require which is written into classes.
>>
>> How necessary is that? Can we just use ES6 instead? Should we rewrite some
>> of the goog functions to do more precisely what we need?
>>
>> Thoughts?
>>
>> Harbs
>
>