Как получить родительский модуль ES в узле? - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно получить родительский URL, путь или спецификатор данного модуля ES в узле.

Я использую node --experimental-modules / vanilla 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 Ответ

0 голосов
/ 03 июля 2018

Я не уверен, есть ли прямой способ сделать то, что вам нужно, но вот обходной путь: вы можете создать функцию-обертку и передать имя файла.

// 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...