Переменная webpack HMR module.accept вместо строки - PullRequest
1 голос
/ 20 января 2020

Попытка выполнить так:

var path = './App';
module.hot.accept(path, () => {
    renderComonent();
})

не работает!

Только:

module.hot.accept('./App', () => {
        renderComonent();
    })

В первом сценарии будет обновлено sh страницы, пока на второй его не будет. PS: я использую новый образец fre sh create-react-app.

По-моему, это ошибка из HMR / webpack.

Есть идеи?

1 Ответ

1 голос
/ 20 января 2020

Это связано с тем, что плагин HotModuleReplacementPlugin работает путем синтаксического анализа аргументов, заданных для module.hot.accept во время компиляции.

Синтаксический анализатор не настолько умен, чтобы следовать ссылкам на переменные в AST, следовательно, ваш пример не работает.

Здесь вы можете увидеть, как реализован плагин (в частности, "хук" синтаксического анализатора, который находит вызовы module.hot.accept()): https://github.com/webpack/webpack/blob/master/lib/HotModuleReplacementPlugin.js#L116

Так что это ожидаемое поведение, а не ошибка. (Даже если сбивает с толку.)

...