`if __name__ == '__main__'` equivalent in javascript es6 modules

后端 未结 3 2023
猫巷女王i
猫巷女王i 2020-12-04 01:53

Is it possible to check if JavaScript file is being run directly or if it was required as part of an es6 module import.

for example a main script is included.

<
3条回答
  •  有刺的猬
    2020-12-04 02:31

    An alternative for ES6 modules is now supported in Node. Using the new import.meta builtin.

    Example:

    // main.mjs
    import { fileURLToPath } from "url";
    import "./lib.mjs"
    
    if (process.argv[1] === fileURLToPath(import.meta.url)) {
      console.log(`main ran!`);
    }
    
    // lib.mjs
    import { fileURLToPath } from "url";
    
    if (process.argv[1] === fileURLToPath(import.meta.url)) {
      console.log(`lib ran!`);
    }
    

    and our output:

    main ran!
    

提交回复
热议问题