Razzle - Реакция не найдена Ошибка при запуске server.js в папке сборки
Я использовал Razzle для серверного приложения.
Теперь пришло время развернуть приложение на сервере. Я использую IIS в качестве веб-сервера. Но когда я перемещаю папку сборки в другой каталог и запускаю на ней сервер узлов, появляются ошибки, которые я не могу найти модули, которые я использовал в своем приложении, например, реакция.
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'react'
...
Должен ли я переместить папку node_modules с папкой сборки? или я что-то не так делаю?
1 ответ
Поскольку на мой вопрос никто не ответил. Делюсь тем, что узнал.
Razzle использует webpack-node-externals, чтобы исключить node_modules при сборке. (я не знаю почему)
Простое изменение в razzle.config.js исправит это.
module.exports = {
modify: (config, { target, dev }, webpack) => {
if (target === "node") {
config.externals = []
}
return config;
},
};
Вам нужно переместить node_modules вместе с папкой сборки. Потому что server.js и пакетные файлы в папке сборки нуждаются в модулях, которые вы установили. Вышеупомянутая ошибка происходит, потому что сервер не может найти модуль реакции.