Vlad
ничто, если это твой модуль
Vlad
и невозможно если не твой
Vladimir
Единственный нормальный способ перезагрузить модуль - это перезапустить процесс
Vladimir
Это проблема конкретного модуля
Evgeny
мне в тестах приходилось сбрасывать кеш
Ohar
Andrew
Говно, оно обычно внутри, а не снаружи.
Это временно. всякое говно стремится изнутри наружу, желательно еще на вентилятор. Очень желательно при этом, чтобы он еще пооборотистее был и был включен.
Andrew
Ohar
@aleksxor
в es5 нотации это было как-то очевиднее. module.exports в общем случае было объектом создавшемся при первом проходе. и было понятно что если реквайришь этот объект то реквайришь именно ссылку
Vladimir
Да можно скорее всего
Vladimir
Но все равно не нужно
Vladimir
хотя честно говоря не вполне понимаю, как может работать импорт commonjs из es6
Vlad
они ведь обсуждали в сентябре что будет работать норм
Vlad
@ChALkeR @vkurchatkin я тоже не до конца понимаю, но без этого esm/cjs интероп ломается
Vladimir
Еще мне интересно как будет __dirname и __filename
Roman
Поясните за преимущества коа перед эксперссом?
Vladimir
чет в итоге не понятно, на чем то остановились или нет
Vladimir
__dirname и __filename объективно полезные вещи
Vladimir
но можно делать import { __dirname, __filename } from 'node' или что то такое
Ale
Vladimir
ну не сказал бы - наоборот
Vladimir
это сейчас хак
Anonymous
+
Anonymous
но вообще энв и в глобал снова себе может засунуть чот
Ale
и сейчас тоже хак)
Vladimir
ну так они и не глобалы
Vladimir
в том и суть
Vladimir
Попробовать что ли этот пропозал заимплементить
Anonymous
вообще там у tc39 идея когда-нибудь сломать совместимость и делать такое:
import { cos } from 'Math';
Anonymous
и стдлиб в модули дефолтные поместить
Vladimir
надо заранее зарерзервировать неймспейс под стандартные модули
Ale
и норм
Anonymous
Anonymous
а потом окажется, что в ноде занято чота
Anonymous
точнее не в ноде, а в npm
Anonymous
что еще хуже
Anonymous
crypto в ноде и браузере вроде не одинаковые
Anonymous
уже
Pavel
да это ж нпм, захотят - подвинут, если на уровне стандарта будет
Anonymous
тогда не будет смысла использовать js как динамический язык в принципе
Anonymous
это какой-то c++ выходит
Anonymous
с несовместимыми компиляторами
Vlad
Vlad
Vlad
вот url parser синхронизировали между нодой и браузером уже хорошо
Anonymous
а уже выпустили?
Anonymous
это ж брейкинг ченж
Anonymous
в 8 будет видимо
Anonymous
а, да
Anonymous
забыл что это св-во
Ohar
#вопрос Господа, подскажите как быть с такой неприятностью?
// foo.js
import Lib from 'Lib/browser'
function foo () {
//кодище
}
export default foo
// foo.test.js
import foo from './foo'
describe(
'foo', () => {
// тесты валятся с ошибкой «ReferenceError: window is not defined»
}
)
Ohar
Надо как-то подменять библиотеку версией для NodeJS на время тестирования
Vlad
Vlad
Если да, то переписать
Ohar
Мой
Ohar
Как именно?
Ohar
Проверять окружение?
Vlad
Прокидывать window аргументом
Ale
ну а лучше то, что от window надо
Ohar
эээ куда? В библиотеку?
Ale
а если она от dom зависит, то наверное jsdom
Ohar
Да, что у тебя из windows используется?
У меня в коде ничего.
У меня подключена библиотека Lib и у неё есть вариант сборки для браузера и вариант для ноды.
Тестируемый модуль написан для работы в браузере и подключает браузерную версию, которая падает при попытке тестировать код нодой.
Ohar
Что логично
Ohar
Мне надо на время теста подменять зависимость моего модуля
Vlad
Ohar
А как?
Vlad
Я не знаю
Vlad
Ты же говоришь что есть две версии
Ohar
Ну да
Ohar
Мне надо при тесте подменять их
Ohar
Каким-то образом