无法将webpack识别为内部或外部命令,可操作程序或批处理文件


125

我正在学习React.js,正在使用Windows 8 OS。我已经导航到我的根文件夹

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)之后,问题就解决了
Arthur Tsidkilov

Answers:


81

我也有很长时间了。(已在全局范围内安装了webpack等,但仍未识别)事实证明我没有为npm指定环境变量(文件webpack.cmd坐在哪里),所以我将其添加到Path变量中

%USERPROFILE%\AppData\Roaming\npm\

如果您使用的是Powershell,则可以键入以下命令以有效地添加到您的路径:

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

重要说明:不要忘记关闭并重新打开Powershell窗口以应用此功能。

希望能帮助到你。


6
嗯,我被困在同一个地方...您能详细说明一下您的答案吗?
入侵者

2
我遵循了所有步骤,但没有成功,最后我意识到,我没有以管理员身份打开CMD。
侯赛因·贾迪迪'17

1
最好将其设置为%APPDATA%\ npm
Nikolay Petyukh '19

156

解决此问题的更好方法是安装 Webpack全局。

这始终有效,并且对我有用。请尝试以下命令。

npm install -g webpack

36
我认为应该注意的是,使用-g全局安装webpack,如果您有多个项目可能需要不同版本的webpack,则可能不希望这样做。
Uber Schnoz

92

或者,如果在本地安装了Webpack,则可以显式指定命令提示符应在何处查找,如下所示:

node_modules\.bin\webpack

(这确实假定您package.json和您一起位于目录内,并且已经运行了npm install webpack。)


4
同意Max,原因是建议在本地安装webpack(在devDependencies中)-但是我的问题有点不同,当在VS 2017中将webpack作为预构建步骤添加时,我认为VS足够聪明,可以找到没有完整路径的本地webpack cmd
JimiSweden

@JimiSweden您是否尝试过添加node_modules\.bin工具中->配置外部工具
Max Favilli

4
您可以尝试使用npx webpackwhich进行检查,./node_modules/.bin而不用摆弄路径。
Manfred

46

npm install -g webpack-dev-server 将解决您的问题


2
它可能会解决OP发布的错误消息,但这不是解决该问题的好方法,因为它增加了更多的依赖关系。 不仅仅是解决缺少的Webpack。查看其他任何有投票权的答案,以获得更好的选择。
angularsen,

2
正如不同的贡献者已经指出的那样(请参阅其他答案/评论),全局安装被认为是不好的做法,因为它会将您锁定到一个版本。也可以看看 webpack.js.org/guides/installation
Manfred


12

将webpack命令作为npm脚本添加到package.json中。

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

然后跑

npm运行编译

安装Webpack后,它将在./node_modules/.bin文件夹中创建一个二进制文件。npm脚本还会查找在此文件夹中创建的可执行文件


不起作用-npm install -g webpack-dev-server是正确的命令
TarmoPikaro

11

Webpack CLI现在位于单独的软件包中,并且必须全局安装才能使用'webpack'命令:

npm install -g webpack-cli

编辑:发生了很大的变化。Webpack的人们不建议在全局上安装CLI(或为此单独安装)。现在应该解决此问题,但正确的安装命令是:

npm install --save-dev webpack

此答案最初旨在作为OP的“解决方法”。


1
据我了解,“必须全局安装”是不正确的。甚至webpack的人也建议不要这样做。参见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测试)
Manfred

那就是门票
塞卡勒克

npm i -g webpack webpack-cli
VnDevil

4

我们也遇到了这个问题,我喜欢使用在中定义的脚本建议的所有答案 package.json

对于我们的解决方案,我们通常使用以下顺序:

  1. npm install --save-dev webpack-cli(如果您使用的是webpack v4或更高版本,否则请使用npm install --save-dev webpack,请参阅webpack安装,于2019年1月19日检索)
  2. npx webpack

步骤1是一次性的。步骤2还会检查./node_modules/.bin。您也可以将第二步添加为npm脚本package.json,例如:

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

然后使用 npm run build执行此脚本。

在Windows 10上使用npm 6.5.0,webpack 4.28.4和webpack-cli 3.2.1版本测试了该解决方案,并在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

如果您刚刚克隆了一个仓库,则首先需要运行

npm install

如果缺少项目依赖项,则会生成您得到的错误。上面的命令将下载并安装它们。


2
npx webpack

它为我工作。我正在使用Windows 10,并且在本地安装了webpack。


2

升级到React 16.12.0时遇到了这个问题

我有两个错误,一个关于webpack,另一个关于商店呈现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 cache clean --force
npm install -g webpack

注意 -以管理员身份运行这些命令。安装后,请关闭命令提示符并重新启动以查看应用的更改。


1

如果您创建一个文件夹样板为您JS项目,使您可以使用JS模块,webpack并且Babel是很好的工具。

不要安装 webpack在全球范围内,并且在安装完这两个版本的最新版本之后,您的package.json文件将被加载并可以复制以供将来的项目使用。

确保删除 node_modules文件夹以减小样板文件夹中的文件大小,然后重新安装node_modulesnpm install

我忘记运行npm install并尝试运行webpack dev-server时一直出现此错误,直到我意识到需要运行npm install安装才能正常node_modules工作。


删除node_modules + npm install让我重新开始。谢谢!
布兰登·巴克利


0

对我来说,解决方法是在本地将webpack安装为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安装在错误的文件夹中。我的错误是没有注意将Webpack安装到的文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.