webpack не распознается как внутренняя или внешняя команда, работающая программа или командный файл


125

Я изучаю React.js и использую ОС Windows 8. Я перешел в свою корневую папку

1.Created the package.json file by npm init
2. install webpack by npm install -S webpack.now webpack has been downloaded to my modules folder
3. install webpack globally by typing npm install webpack -g
4. i am also having a webpack.config.js in my root folder which contains the source and ouput directory
5. when i type the webpack command i am getting the below error.

webpack не распознается как внутренняя или внешняя команда, работающая программа или командный файл


У меня была эта проблема, но после перезапуска IDE (в моем случае PHPStorm) проблема была решена
Артур Цидкилов

Ответы:


81

У меня тоже была эта проблема долгое время. (webpack установлен глобально и т. д., но все еще не распознается) Оказалось, что я не указал переменную окружения для npm (где находится файл webpack.cmd), поэтому я добавляю в свою переменную Path

%USERPROFILE%\AppData\Roaming\npm\

Если вы используете Powershell, вы можете ввести следующую команду, чтобы эффективно добавить в свой путь:

[Environment]::SetEnvironmentVariable("Path", "$env:Path;%USERPROFILE%\AppData\Roaming\npm\", "User")

ВАЖНО: не забудьте закрыть и снова открыть окно PowerShell, чтобы применить это.

Надеюсь, поможет.


6
ну, я застрял на том же месте ... Не могли бы вы уточнить свой ответ
Intruder

2
Я выполнил все шаги, но это не сработало, и, наконец, я понял, что не открывал CMD как администратор.
Хосейн Джадиди

1
Лучше установить% APPDATA% \ npm
Николай Петюх 01

156

Лучшее решение этой проблемы - Webpackглобальная установка .

Это всегда работает, и это сработало для меня. Попробуйте команду ниже.

npm install -g webpack

36
Я думаю, следует отметить, что использование -g устанавливает веб-пакет глобально, что может вам не понадобиться, если у вас есть несколько проектов, для которых могут потребоваться разные версии веб-пакета.
Uber Schnoz

92

В качестве альтернативы, если у вас установлен локально Webpack, вы можете явно указать, где командная строка должна искать его, например:

node_modules\.bin\webpack

(Это предполагает, что вы находитесь внутри каталога с вашим package.jsonи что вы уже запустили npm install webpack.)


4
Согласитесь с Максом, причина в том, что рекомендуется устанавливать веб-пакет локально (в devDependencies). Моя проблема была немного другой, но при добавлении веб-пакета в качестве этапа предварительной сборки в VS 2017 я думал, что VS достаточно умен, чтобы найти webpack cmd локально без полного пути
JimiSweden

@JimiSweden, вы пробовали добавить node_modules\.binв инструменты-> настроить внешние инструменты
Макс Фавилли

4
Вы можете попробовать использовать npx webpackwhich также проверяет ./node_modules/.binвместо того, чтобы возиться с путями.
Manfred

47

npm install -g webpack-dev-server решит вашу проблему


2
Это может решить сообщение об ошибке, опубликованное OP, но это не лучшее решение проблемы, поскольку оно добавляет больше зависимостей, чем просто решение отсутствующего веб-пакета. Посмотрите любой из других высоко оцененных ответов, чтобы найти лучшие альтернативы.
angularsen

2
Как уже указали разные участники (см. Другие ответы / комментарии), глобальная установка считается плохой практикой, поскольку она ограничивает вас одной версией. См. Также webpack.js.org/guides/installation
Манфред


12

Добавьте команду webpack как сценарий npm в свой package.json.

{
    "name": "react-app",
    "version": "1.0.0",
    "scripts": {
      "compile": "webpack --config webpack.config.js"
    }
}

Тогда беги

npm запустить компиляцию

Когда веб-пакет установлен, он создает двоичный файл в папке ./node_modules/.bin. Скрипты npm также ищут исполняемый файл, созданный в этой папке


не работает - npm install -g webpack-dev-server is
right

11

Интерфейс командной строки Webpack теперь находится в отдельном пакете и должен быть установлен глобально, чтобы использовать команду webpack:

npm install -g webpack-cli

РЕДАКТИРОВАТЬ: многое изменилось. Пользователи Webpack не рекомендуют устанавливать CLI глобально (или отдельно в этом отношении). Эта проблема должна быть исправлена ​​сейчас, но правильная команда установки:

npm install --save-dev webpack

Этот ответ изначально был задуман как «временное решение» проблемы OP.


1
"должен быть установлен глобально", насколько я понимаю, неверно. Даже разработчики веб-пакетов не советуют этого делать. См. Webpack.js.org/guides/installation
Manfred

4

вам необходимо установить webpack и webpack-cli в одной области.

npm i -g webpack webpack-cli

или,

npm i webpack webpack-cli

если вы устанавливаете его локально, вам нужно называть его специально

node_modules/.bin/webpack -v

Или, если установлена ​​локально, вы можете использовать npx webpack(проверено с npm версии 6.5.0, webpack 4.28.4 и webpack-cli 3.2.1)
Манфред

вот и билет
Чекалик

npm i -g webpack webpack-
cli

4

Мы тоже столкнулись с этой проблемой, и мне нравятся все ответы, в которых предлагается использовать сценарий, определенный в package.json.

Для наших решений мы часто используем следующую последовательность:

  1. npm install --save-dev webpack-cli(если вы используете webpack v4 или новее, в противном случае используйте npm install --save-dev webpack, см. установку webpack , получено 19 января 2019 г.)
  2. npx webpack

Шаг 1 - разовый. Шаг 2 также проверяет ./node_modules/.bin. Вы также можете добавить второй шаг как сценарий npm package.json, например:

{
   ...
   "scripts": {
      ...
      "build": "npx webpack --mode development",
      ...
   },
   ...
}

а затем используйте npm run buildдля выполнения этого сценария.

Протестировано это решение с npm версии 6.5.0, webpack версии 4.28.4 и webpack-cli версии 3.2.1 в Windows 10, выполняя все команды внутри окна PowerShell. Моя версия nodejs - 10.14.2. Я также тестировал это на Ubuntu Linux версии 18.04.

Я бы посоветовал не устанавливать webpack глобально, в частности, если вы работаете с большим количеством разных проектов, для каждого из которых может потребоваться другая версия webpack. Глобальная установка webpack привязывает вас к определенной версии для всех проектов на одном компьютере.


4

Может быть, чистая установка решит проблему. Эта «команда» удаляет все предыдущие модули и переустанавливает их, возможно, пока модуль webpack не полностью загружен и установлен.

npm clean-install

3

У меня была такая же проблема, и я просто добавил блок кода в свой файл package.json;

 "scripts": {
   "build": "webpack -d --progress --colors"
 }

а затем запустите команду на терминале;

npm run build


2

Просто запустите командную строку (cmd) от имени администратора.


2

Если вы только что клонировали репо, вам сначала нужно запустить

npm install

Полученная вами ошибка будет сгенерирована, если у вас отсутствуют зависимости проекта. Вышеупомянутая команда загрузит и установит их.


2
npx webpack

У меня это сработало. Я использую Windows 10 и установил веб-пакет локально.


2

У меня возникла эта проблема при обновлении до React 16.12.0 .

У меня было две ошибки: одна касалась веб-пакета, а другая - магазина при рендеринге DOM.

Ошибка Webpack:

webpack не распознается как внутренняя или внешняя команда, работающая программа или командный файл

Решение Webpack:

  1. Близкое решение VS
  2. Удалить node_modulesпапку
  3. Исключен package-lock.json
  4. npm install
  5. npm rebuild
  6. Повторил это 2-3 раза

Ошибка магазина:

Тип Store <()> нельзя присвоить типу Store <any, AnyAction>

Магазин решения:

Предложения по обновлению моей версии React не устранили эту ошибку для меня, но, несмотря на это, я бы рекомендовал это сделать.

В итоге мой код выглядел так:

ReactDOM.render(
        <Provider store={store as any}>
            <ConnectedApp />
        </Provider>,
        document.getElementById('app')
    );

Согласно этому решению


1

У меня такая же ошибка, ни одно из решений у меня не сработало, я переустановил узел и восстановил среду, все снова работает.


Это то, что я должен был сделать. Я попробовал по крайней мере три других "решения", представленных здесь, и ни одно из них не помогло, за исключением повторной деинсталляции и повторной установки Node.
Quiver

1

Для меня это сработало, чтобы установить веб-пакет отдельно. Так просто:

$npm install
$npm install webpack

Я не уверен, зачем это нужно, но это сработало.


1

Эти приведенные ниже команды работали для меня.

npm cache clean --force
npm install -g webpack

Примечание. Выполните эти команды от имени администратора. После установки закройте командную строку и перезапустите ее, чтобы увидеть примененные изменения.


1

Если вы создаете папку шаблонный для ваших проектов JS , так что вы можете использовать JS модули, webpackи Babelбольшие средства.

Не устанавливайте webpackглобально, и после установки последних версий обеих, ваш package.jsonфайл будет загружен и готов к копированию для будущих проектов.

Обязательно удалите node_modulesпапку, чтобы уменьшить размер файла в стандартной папке, а затем переустановите node_modules npm install.

Я забыл запустить npm install и продолжал получать эту ошибку при попытке запустить свой dev-сервер webpack, пока не понял, что мне нужно запустить npm installустановку, node_modulesи тогда это сработало.


Удаление node_modules + npm install снова заставило меня. Спасибо!
Брэндон Баркли,


0

Исправление для меня заключалось в локальной установке веб-пакета как devDependency. Хотя он у меня есть, так как devDependenciesон не был установлен в папке node_modules. Так что я побежал npm install --only=dev


-1

Иногда npm install -g webpack не сохраняется должным образом. Лучше использовать npm install webpack --save . У меня это сработало.


1
-g устанавливается глобально (не ваш локальный проект node_modules + package.json), а --save устанавливается локально (в вашем локальном node_modules + package.json), поэтому этот ответ неверен.
Джордж

-1

У меня была такая же проблема, и я не мог ее понять. Я просмотрел каждую строчку кода и не смог найти свою ошибку. Потом я понял, что установил webpack не в ту папку. Моя ошибка заключалась в том, что я не обращал внимания на папку, в которую я устанавливал веб-пакет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.