No. I was trying to use process to check whether it’s running in a Node runtime (such as Node or Electron). window does not have process.
I’m trying to add a class that lets the client know what environment it’s running in. Adding global sounds like a good idea. Between window and global, I think that would offer a solution everywhere. > On Jul 5, 2017, at 7:48 PM, Alex Harui <aha...@adobe.com.INVALID> wrote: > > Sure, I know it wouldn't work at runtime, but it sounded like Harbs > couldn't even get the compiler to accept window["process"] which it should. > > So, it should be ok to write: > > if(typeof window !== "undefined") > { > theProcess = window["process"]; > } > else > > theProcess = global.process > > But is there really a process property in the browser? > > We could create or own single variable if we want. How often do libraries > need stuff in window/global? Classes that need it should be able to use > inject_html and run some JS that maps window to global or the other way > around. > > HTH, > -Alex > > On 7/5/17, 6:43 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > >> Node.js doesn't have a window variable, so window["process"] won't work. >> They have a global variable instead. >> >> I remember reading that there is a proposal for ECMAScript to standardize >> a >> single variable that refers to window in the browser and global in >> Node.js, >> but that doesn't exist yet. >> >> - Josh >> >> On Tue, Jul 4, 2017 at 11:35 PM, Alex Harui <aha...@adobe.com.invalid> >> wrote: >> >>> What class in Core needs this dependency? I think one drawback is that >>> users of that class will need to add node.swc to their project >>> dependencies. But I don't think every consumer of Core will need >>> node.swc. >>> >>> But first, why didn't window["process"] work? In theory Falcon will let >>> you access anything off of window. We could also add global if we want. >>> Or maybe we should only allow global and have some bootstrap code that >>> maps global to window? >>> >>> -Alex >>> >>> On 7/4/17, 2:09 PM, "Harbs" <harbs.li...@gmail.com> wrote: >>> >>>> Actually, I see that the Node typedefs has all the process declarations >>>> in global.js. >>>> >>>> Is there an issue with adding a dependency in CoreJS to node.swc? >>>> >>>> Should a class that has this dependency go somewhere else? (I don’t >>>> really see an issue with adding the dependency, but I’m throwing this >>> out >>>> in case I’m missing something.) >>>> >>>> Harbs >>>> >>>>> On Jul 5, 2017, at 12:00 AM, Harbs <harbs.li...@gmail.com> wrote: >>>>> >>>>> Looks like it. >>>>> >>>>> I see this in missing.js: >>>>> >>>>> /** >>>>> * @export >>>>> * This gets mapped to org.apache.flex.utils.Language.trace() by the >>>>> compiler >>>>> * @param {...} rest >>>>> */ >>>>> function trace(rest) {} >>>>> >>>>> /** >>>>> * @type {!Console} >>>>> * @const >>>>> */ >>>>> var console; >>>>> >>>>> >>>>> I guess I can add another one like so: >>>>> >>>>> /** >>>>> * @type {!Process} >>>>> * @const >>>>> */ >>>>> var process; >>>>> >>>>> However, it seems like a drag to have to add a typedef every time a >>>>> developer needs to check for the existence of a global that we did not >>>>> think of. >>>>> >>>>>> On Jul 4, 2017, at 9:13 PM, Harbs <harbs.li...@gmail.com> wrote: >>>>>> >>>>>> Thanks. Here’s what I see: >>>>>> >>>>>> if(typeof window !== "undefined") >>>>>> { >>>>>> theConsole = window.console; >>>>>> } >>>>>> else if(typeof console !== "undefined") >>>>>> { >>>>>> theConsole = console; >>>>>> } >>>>>> >>>>>> Did you define console in a typedef maybe? >>>>>> >>>>>> I’m thinking that Falcon should really allow undefined variables >>> when >>>>>> used with “typeof”. >>>>>> >>>>>> Truth be told, I really need to do something like one of these: >>>>>> if(typeof (process) != 'undefined' && {}.toString.call(process) == >>>>>> '[object process]’) >>>>>> or: >>>>>> if(typeof process != 'undefined' && process && >>>>>> process.constructor.name == "process”) >>>>>> >>>>>> Of course every reference to process causes a compiler error. I >>> wonder >>>>>> if there’s some way to tell the compiler to accept it without >>>>>> complaining… >>>>>> >>>>>>> On Jul 4, 2017, at 8:54 PM, Josh Tynjala <joshtynj...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>> I don't remember exactly what I did, but in order to get trace() >>>>>>> working in >>>>>>> Node.js, I had to figure out how to find the console object on >>> window >>>>>>> versus global. I feel like I remember using typeof, but maybe it >>> was >>>>>>> something else. Take a look at the implementation of >>> Language.trace() >>>>>>> to >>>>>>> see what I did. >>>>>>> >>>>>>> - Josh >>>>>>> >>>>>>> On Jul 4, 2017 5:26 AM, "Harbs" <harbs.li...@gmail.com> wrote: >>>>>>> >>>>>>>> I’m trying to figure out how to solve this dilemma: >>>>>>>> >>>>>>>> Browsers attach global variables to window. >>>>>>>> >>>>>>>> Node.js attaches globals to global. >>>>>>>> >>>>>>>> I’m trying to check for the existence of a global called process. >>> In >>>>>>>> JS, >>>>>>>> you’d generally do that by checking typeof process == ‘undefined’. >>>>>>>> Falcon >>>>>>>> does not allow you to do that and complains that process is an >>>>>>>> undefined >>>>>>>> property. In the browser you can use window[“process”] == >>> undefined >>>>>>>> and in >>>>>>>> node you can (theoretically) use global[“process”] == undefined. I >>>>>>>> can’t >>>>>>>> think of a generic way to do this though. >>>>>>>> >>>>>>>> Thoughts? >>>>>>>> Harbs >>>>>> >>>>> >>>> >>> >>> >