代码之家  ›  专栏  ›  技术社区  ›  Matías Fidemraizer

如何在节点中获取ES模块父级?

  •  0
  • Matías Fidemraizer  · 技术社区  · 6 年前

    我需要在节点中获取给定ES模块的父URL、路径或说明符。

    我在用 node --experimental-modules /香草ES模块(这里没有蒸腾!).

    当前代码库运行在节点10.5的顶部。

    例如:

    // moduleA.mjs
    import { x } from './moduleB.mjs'
    

    // moduleB.mjs
    
    // How do I get the file URL, path or 
    // the specifier of `moduleA`?
    export const x = 11
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Hodrobond    6 年前

    // moduleA.mjs
    import {
      wrapper
    } from './moduleB.mjs';
    const {
      x
    } = wrapper('./moduleB.mjs');
    
    
    // moduleB.mjs (if you want multiple functions to have access to the name)
    const wrapper = (nameOfFile) => {
      const x = () => {
        console.log(nameOfFile);
      };
      const y = () => {
        console.log('some other function:', nameOfFile);
      };
      return {
        x,
        y,
      };
    }
    export const wrapper;
    
    // other approach, if you only want that one function wrapped
    // moduleA.mjs
    import {
      wrapper
    } from './moduleB.mjs';
    const x = wrapper('./moduleB.mjs');
    // moduleB.mjs
    const wrapper = (nameOfFile) => (
      (inputForX) => {
        console.log(nameOfFile);
      })
    export const wrapper;