Rails Webpacker Реагирует: /bin/webpack-dev-сервер Команда переместилась в отдельный пакет: @webpack-cli/serve

#ruby-on-rails #reactjs #webpacker

Вопрос:

Сегодня я создаю новое приложение Rails webpacker с помощью команды:

 $ rails new my-app --webpacker=react -d mysql
 

Новое приложение создавалось плавно, пока я не попытался запустить:

 $ ./bin/webpack-dev-server
 

Интерфейс командной строки webpack возвращает сообщение:

 The command moved into a separate package: @webpack-cli/serve
Would you like to install serve? (That will run yarn add -D @webpack-cli/serve) (yes/NO) :
 

Я попытался выбрать yes , но установка webpack-cli не увенчалась успехом с сообщением:

 success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ @webpack-cli/serve@1.5.2
info All dependencies
└─ @webpack-cli/serve@1.5.2
Done in 2.11s.
TypeError: Class constructor ServeCommand cannot be invoked without 'new'
    at runWhenInstalled (/home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:46:9)
    at /home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:124:15
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
 

и когда я запускаю ./bin/webpack-dev-server команду, я получаю сообщения об ошибках:

 /home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:46
    return func(...args);
           ^

TypeError: Class constructor ServeCommand cannot be invoked without 'new'
    at runWhenInstalled (/home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:46:9)
    at promptForInstallation (/home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:140:10)
    at /home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/cli.js:32:43
    at Object.<anonymous> (/home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/cli.js:366:3)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
 

Вот мой package.json :

 {
  "name": "my-app",
  "private": true,
  "dependencies": {
    "@babel/preset-react": "^7.14.5",
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "5.4.2",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "prop-types": "^15.7.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "turbolinks": "^5.2.0",
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^4.0.0"
  }
}
 

и мой node.js версия

 $ node -v
v14.17.5
 

Ответ №1:

На данный момент временно я решаю эту проблему, используя предыдущую версию:

 "devDependencies": {
  "webpack-dev-server": "^3.11.2"
}
 

Обновить:
webpack-cli amp; webpack-dev-server в devDependencies свежей упаковке.json, сгенерированный rails new my-app --webpacker=react с помощью:

 "dependencies": {
  ...
  "webpack-cli": "^3.3.12"
  ...
},
"devDependencies": {
  "webpack-dev-server": "^4.0.0"
}
 

Если мы посмотрим отсюда, мы обнаружили, что webpack-dev-server v.4.0.0 это зависит от "webpack-cli": "^4.7.2" того, что несовместимо с fresh rails webpacker конфигурациями пакетов, которые используют "webpack-cli": "^3.3.12" в качестве зависимостей.

Обычно мы можем проверить webpack-cli информацию, используя команду npx webpack-cli info . Но теперь, когда я пытаюсь, я получил ошибку и обнаружил предупреждение:

 $ npx webpack-cli info
...
warning " > @webpack-cli/info@1.3.0" has incorrect peer dependency "webpack-cli@4.x.x".
...
TypeError: Class constructor InfoCommand cannot be invoked without 'new'
    at runWhenInstalled (/home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:46:9)
    at /home/yohanes/Projects/my-app/node_modules/webpack-cli/bin/utils/prompt-command.js:124:15
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
...
 

На данный момент единственные конфигурации, которые работают только с моей средой:

 "dependencies": {
  ...
  "webpack-cli": "^3.3.12"
  ...
},
"devDependencies": {
  "webpack-dev-server": "^3.11.2"
}
 

Обновить:
Пожалуйста, смотрите комментарий DHH здесь

Дело закрыто.