npm - npx webpack 坚持要安装 webpack-cli 但它已经安装了
问题描述
我正在尝试运行命令:
npx webpack
它告诉我它需要 webpack-cli 并询问它是否应该安装它,我说“是”。然后它给了我:
PS C:\_ljdev\webpack demo> npx webpack
npx: installed 321 in 11.89s
One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
- webpack-cli (https://github.com/webpack/webpack-cli)
The original webpack full-featured CLI.
We will use "npm" to install the CLI via "npm install -D".
Do you want to install 'webpack-cli' (yes/no): yes
Installing 'webpack-cli' (running 'npm install -D webpack-cli')...
npm WARN webpack-cli@3.2.3 requires a peer of webpack@4.x.x but none is installed. You must install peer dependencies yourself.
+ webpack-cli@3.2.3
updated 1 package and audited 1053 packages in 2.093s
found 0 vulnerabilities
{ Error: Cannot find module 'webpack-cli'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at runCommand.then (C:\Users\luke.jenner\AppData\Roaming\npm-cache\_npx\3272\node_modules\webpack\bin\webpack.js:143:5)
at process._tickCallback (internal/process/next_tick.js:68:7) code: 'MODULE_NOT_FOUND' }
所以我尝试通过以下方式手动在本地安装它:
PS C:\_ljdev\webpack demo> npm install webpack-cli
npm WARN webpack-cli@3.2.3 requires a peer of webpack@4.x.x but none is installed. You must install peer dependencies yourself.
+ webpack-cli@3.2.3
updated 1 package and audited 1053 packages in 8.034s
found 0 vulnerabilities
我检查它是否安装使用:
PS C:\_ljdev\webpack demo> npm list
webpack-demo@1.0.0 C:\_ljdev\webpack demo
`-- webpack-cli@3.2.3
+-- chalk@2.4.2
| +-- ansi-styles@3.2.1
(other dependencies omitted for brevity)
所以它似乎已安装。
我再次尝试 npx webpack 并获得完全相同的输出和问题以再次安装 webpack-cli。
谁能告诉我为什么找不到 webpack-cli 本地安装?是否必须全局安装?
或者更奇怪的是:为什么它在尝试自己安装时会失败?
解决方案
我遇到了同样的问题。
经过半天的测试,我终于发现我的项目路径中有特殊字符。删除它们,重新运行npx webpack
,一切正常。
你的项目路径中有一个空格,也许你可以删除它并重试。 点击这里验证我的结果
编辑:
对不起,我没有表达清楚。我的意思是项目路径中有特殊字符,在 npm 安装过程中会转换为其他字符。
如果您更改工作目录名称,例如 from webpack-demo
to webpack/demo
,请删除并重新安装webpack
and webpack-cli
. 然后打开目录package.json
下的webpack
包node_modules
,你会发现该_where
属性包含本地绝对路径,但与你当前的真实项目路径不同。
我猜(可能不对,可能是其他方法)该npx
命令将使用该_where
属性来定位webpack
包。所以如果路径错误,npm
会有一个提示,你应该webpack-cli
先安装。但即使你重新安装webpack-cli
,其他脚本仍然找不到它。
推荐阅读
- macos - 在 macOS 上安装旧版本的 Kong
- excel - Excel VBA:获取谷歌视图源
- javascript - 如何根据测试用例格式化
- java - 在 Java 中折叠顺序流
- angular - Angular 路由器导航 skipLocationChange 在后续尝试使用解析器时不起作用
- c# - 在 WPF 中使用 ComboBox 搜索 SQL 数据库
- excel - 条件格式单元格内容在范围内是可变的
- c - 返回 char *str 类型的 float 的 printf val
- excel - 将特定文本字符串转换为特定数字
- javascript - Twitter API:如何获取用户 B 在 `statuses/mentions_timeline` 调用中是否关注经过身份验证的用户 A