Webpack - webpack-dev-server:找不到命令

moe*_*joe 85 node.js npm webpack

我正在使用webpack处理React webapp,与本教程一起使用.

无意中,我将node_modules文件夹添加到我的git中.然后我再次使用它删除它git rm -f node_modules/*.

现在,当我尝试启动webpack服务器时,出现以下错误:

> webpack-dev-server -d --config webpack.dev.config.js --content-base public/ --progress --colors

sh: webpack-dev-server: command not found

npm ERR! Darwin 14.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "run" "devserve"
npm ERR! node v0.12.4
npm ERR! npm  v2.10.1
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! Blabber@0.0.1 devserve: `webpack-dev-server -d --config webpack.dev.config.js --content-base public/ --progress --colors`
npm ERR! spawn ENOENT
Run Code Online (Sandbox Code Playgroud)

起初我以为这只是我的项目,但后来我检查了教程的代码检查点:同样的错误!所以有些东西似乎在全球搞砸了.

这是我到目前为止所尝试的:

  • rm node_modules 并重新安装 npm install
  • npm cache clean正如有人在github上提到过这个问题
  • 全局安装webpack npm install -g webpack
  • 从我的系统中完全删除节点和npm(使用本指南)并使用brew重新安装

错误消息仍然存在.我还能尝试什么?

PS:内容webpack.dev.config.js是:

var config = require('./webpack.config.js');
var webpack = require('webpack');

config.plugins.push(
  new webpack.DefinePlugin({
    "process.env": {
      "NODE_ENV": JSON.stringify("development")
    }
  })
);

module.exports = config;
Run Code Online (Sandbox Code Playgroud)

moe*_*joe 147

好的,很简单:

npm install webpack-dev-server -g
Run Code Online (Sandbox Code Playgroud)

令我感到困惑的是,我一开始并不需要它,可能是新版本的内容发生了变化.

  • 出于某种原因,如果没有`-g`标志,它对我不起作用.所以:`npm i webpack-dev-server -g`解决了这个问题. (26认同)
  • 我还需要npm安装webpack -g,因为它最初没有全局安装 (5认同)
  • 我也需要 -g 标志 (2认同)
  • 这是令人困惑的,因为在 webpack 页面上,他们的示例中没有 -g 选项。如果不想全局安装,可以在package.json中创建脚本并通过npm run运行。 (2认同)

ill*_*ist 28

仅供参考,要像通过命令行那样访问任何脚本,您需要在系统中将脚本注册为shell脚本(或任何类型的脚本,如.js,.rb),如dir中的这些文件 /usr/bin在UNIX中.而且,系统必须知道在哪里找到它们.即位置必须以$PATH数组加载.


在您的情况下,脚本webpack-dev-server已安装在./node_modules目录内的某个位置,但系统不知道如何访问它.因此,要访问该命令webpack-dev-server,您还需要在全局范围内安装脚本.

$ npm install webpack-dev-server -g
Run Code Online (Sandbox Code Playgroud)

这里-g指的是全球范围.


但是,这不是推荐方式,因为您可能会面临版本冲突的问题; 所以,你可以在npm's package.json文件中设置一个命令,如:

  "scripts": {
    "start": "webpack-dev-server -d --config webpack.dev.config.js --content-base public/ --progress --colors"
   }
Run Code Online (Sandbox Code Playgroud)

此设置将允许您使用简单命令访问所需的脚本

$ npm start
Run Code Online (Sandbox Code Playgroud)

如此短暂的记忆和玩耍.并且,npm知道模块的位置webpack-dev-server.


fan*_*ing 14

该脚本webpack-dev-server已安装在./node_modules目录中.您可以全局再次安装它

sudo npm install -g webpack-dev-server
Run Code Online (Sandbox Code Playgroud)

或者像这样运行它

./node_modules/webpack-dev-server/bin/webpack-dev-server.js -d --config webpack.dev.config.js --content-base public/ --progress --colors
Run Code Online (Sandbox Code Playgroud)

. 意味着在当前目录中查找它.


pme*_*pme 6

运行时出现问题: yarn start

首先运行已修复: yarn install

  • 或 `npm i` 你喜欢哪个 (2认同)

小智 5

我遇到了同样的问题,但以下步骤帮助我摆脱了它。

  1. 在本地安装“webpack-dev-server”(在项目目录中,因为它不是从全局安装中选择的)

    npm install --save webpack-dev-server

可以验证 node_modules 中是否存在 'webpack-dev-server' 文件夹。

  1. 使用 npx 直接运行

npx webpack-dev-server --mode development --config ./webpack.dev.js

npm run start 在 package.json 脚本中的条目应该像上面那样没有 npx 时也可以正常工作。