webpack未被识别为内部或外部命令,可执行程序或批处理文件。

180

我正在学习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)之后,问题得到了解决。 - Arthur Tsidkilov
25个回答

228

解决这个问题的更好方法是全局安装Webpack

这种方法总是有效的,我用它解决了问题。尝试以下命令。

npm install -g webpack

51
需要翻译的内容:I think it should be noted that using the -g installs webpack globally, which you may not want if you have multiple projects that may require different versions of webpack.我的翻译:我认为需要注意的是,使用-g选项会全局安装webpack,如果您有多个项目可能需要不同版本的webpack,则可能不希望这样做。 - Uber Schnoz
16
我也运行了 npm install -g webpack-cli。现在它可以工作了。 - Derk Jan Speelman
文档建议使用本地安装而不是全局安装。"webpack-dev-server将始终使用本地安装而不是全局安装。" - Vicktor

103

如果您在本地安装了Webpack,作为替代方案,您可以明确指定Command Prompt应该在哪里查找它,例如:

node_modules\.bin\webpack

(这假设您已在包含您的package.json的目录中,并且您已经运行了npm install webpack。)


4
同意Max的观点,原因是建议将webpack安装在本地(在devDependencies中)- 我遇到的问题略有不同,当将webpack添加为VS 2017中的预编译步骤时,我认为VS足够聪明,可以在本地找到webpack命令而不使用完整路径。 - JimiSweden
@JimiSweden 你尝试将 node_modules\.bin 添加到 tools->configure external tools 吗? - Max Favilli
7
你可以尝试使用 npx webpack 命令,它会检查 ./node_modules/.bin 目录下的内容,无需处理路径问题。 - Manfred
这是目前为止唯一有效的答案。 - Matthew Wolman

91

我也遇到了这个问题很长一段时间。(全局安装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。 - Hosein Djadidi
1
最好将其设置为 %APPDATA%\npm。 - Mykola Petiukh

58

npm install -g webpack-dev-server 可以解决你的问题。


2
它可能解决OP发布的错误消息,但这不是问题的好解决方案,因为它增加了比“仅仅”解决缺少webpack更多的依赖项。请查看其他得票较高的答案以获取更好的替代方案。 - angularsen
2
正如其他回答/评论中的不同贡献者已经指出的那样,全局安装被认为是一种不良实践,因为它将您限制在一个版本上。请参见https://webpack.js.org/guides/installation/。 - Manfred
我遇到了这个问题,你的解决方案非常好地解决了我的问题:'webpack-dev-server' 不被识别为内部或外部命令、可执行程序或批处理文件。 - Neloy Sarothi

34
尝试在本地目录中删除 node_modules 并重新运行 npm install

这对我起作用是因为之前我删除了 .bin 文件夹来解决 npm install 的问题,但引入了这个问题。 - Nacho H

26

也许重新安装可以解决问题。这个“命令”会删除所有以前的模块并重新安装它们,可能是在 webpack 模块未完全下载和安装时。

npm clean-install

1
这很可能是你正在寻找的答案。 - Laerte Sousa Neto

16

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

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

然后运行

npm run compile

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


无法运行 - npm install -g webpack-dev-server 是正确的命令。 - TarmoPikaro

13

现在Webpack CLI已经成为一个单独的软件包,必须全局安装才能使用“webpack”命令:

npm install -g webpack-cli

编辑: 很多事情已经改变。Webpack团队不建议全局安装CLI(或单独安装)。这个问题现在应该已经被解决了,但正确的安装命令是:

npm install --save-dev webpack

这个答案最初是为了解决OP的问题而设计的"变通方法"。


1
据我所了解,“必须全局安装”是不正确的。即使是webpack的开发人员也不建议这样做。请参见https://webpack.js.org/guides/installation/。 - Manfred

6
npx webpack

它对我很有效。我正在使用Windows 10,并在本地安装了webpack。


6

我们也遇到了这个问题,我喜欢所有建议使用在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。您也可以将第2步作为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将锁定您在同一台机器上的所有项目到特定版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接