ES6 получить путь к модулю внутри модуля

Как я могу получить путь внутри модуля? Я использую babel и webpack для создания пакета для браузеров.

я ожидаю

/src/someModule/index.js

console.log(`someModule path is ${process.execPath}`);

для вывода в браузере someModule path is /home/user/proj/src/someModule

or someModule path is /src/someModule


person Andrew    schedule 22.12.2017    source источник
comment
При запуске JS в браузере у вас не может быть никакой информации о сервере, так как он запускается локально браузером клиента. Зачем вам эта информация? Возможно, вы что-то упустили или не нашли правильного решения проблемы, которая у вас есть.   -  person Seblor    schedule 22.12.2017
comment
да, но могу ли я получить эти пути во время обработки веб-пакета в виде строк в окончательном пакете, таком как плагин для веб-пакета DefinePlugin, чтобы передать process.env в пакет?   -  person Andrew    schedule 22.12.2017
comment
Вы можете попробовать module.i и module.children. Это сработало в моем приложении React.   -  person Nandu Kalidindi    schedule 22.12.2017
comment
@ Андрей, какую проблему ты пытаешься решить? В настоящее время похоже, что вы делаете что-то не так   -  person smnbbrv    schedule 22.12.2017


Ответы (2)


Нет способа получить доступ к пути модуля внутри модуля ES6 (пока). Это известная проблема, и есть предложение этапа 3 для нового мета-свойства import.meta, которое разрешается в объект с соответствующей информацией. Подробнее об этом читайте здесь.

При этом сборщик веб-пакетов делает поддерживает __dirname узла, см., например, Текущий путь к файлу в веб-пакете или Webpack не может использовать __имя_каталога?.

person Bergi    schedule 22.12.2017
comment
На момент написания этой статьи дела пошли лучше, и теперь различные браузеры реализуют import.meta developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ - person Stefnotch; 05.01.2019

import.meta теперь поддерживается во всех современных браузерах, ура!

// /es6/someFile.js
console.log(import.meta);

Выходы:

{url: "https://yourdomain.com/es6/someFile.js"}

(хотя OP спрашивал о веб-пакете, я считаю, что эта информация будет полезна для многих людей, приходящих сюда)

person Klesun    schedule 15.02.2020