CLI 移动到一个单独的包中:webpack-cli

Posted

技术标签:

【中文标题】CLI 移动到一个单独的包中:webpack-cli【英文标题】:The CLI moved into a separate package: webpack-cli 【发布时间】:2018-08-12 00:51:32 【问题描述】:

我是 React.js 的新手,我正在尝试从 tutorialspoint 上的教程中学习,但我遇到了错误。这是我执行 npm start 命令时控制台上的错误:

C:\Users\HP\Desktop\reactApp1> npm start
> reactapp1@1.0.0 start C:\Users\HP\Desktop\reactApp1.
> webpack-dev-server --hot

The CLI moved into a separate package: webpack-cli. 
Please install .webpack-cli. in addition to webpack itself to use the CLI.
-> When using npm: npm install webpack-cli -D 
-> When using yarn: yarn add webpack-cli -D 
module.js:540
    throw err; 

Error: Cannot find module .webpack-cli/bin/config-yargs. 
    at Function.Module._resolveFilenam (module.js:538:15) 
    at Function.Module. load (module.j5:668:25) 
    at Module.require (module.js,587.17) 
    at require (internal/module.js:11:18) 
    at Object•<anonymous> (C:\Users\HP\Desktop\reactApp1\node_modules\webpack-dev-server\bin\webpack-dev-server.js:65:1) 

    at Module. compile (module.js:663:30) 
    at Object.Module. extensions. .js (module.js:656:10) 
    at Module.load (module.js:556:32) 
    at tryModuleLoad (module.js:699:12) 
    at Function.Module. load (modul.js:691:3) 
  npm ERR! code ELIFECYCLE 
  npm ERR! errno 1 
  npm ERR! reactapp@1.0.0 start: `webpack-dev-server --hot`
  npm ERR! Exit status 1
  npm ERR!
  npm ERR! Failed at the reactapp@1.0.0 start script. 
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
  npm ERR! A complete log of this run can be found in:
  npm ERR!     C:Users\HP\AppData\Roaming\npm-cache\_logs\2018-03-06T05_29_08_833Z-debug.log 

package.json

     
      "name": "reactapp1",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": 
        "start": "webpack-dev-server --hot"
      ,
      "author": "",
      "license": "ISC",
      "dependencies": 
        "babel-core": "^6.26.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-react": "^6.24.1",
        "react": "^16.2.0",
        "react-dom": "^16.2.0",
        "webpack": "^4.0.1",
        "webpack-dev-server": "^3.1.0"
      ,
      "devDependencies": 
        "babel-loader": "^7.1.3"
      
    

webpack.config.js

var config = 
    entry: './main.js',
    output: 
        path:'./',
        filename: 'index.js',
    ,
    devServer: 
        inline: true,
        port: 8090
    ,
    module: 
        loaders: [
            
                test: /\.jsx?$/,
                exclude: /node_modules/,
                loader: 'babel',
                query: 
                    presets: ['es2015', 'react']
                
            
        ]
    

module.exports = config;

ma​​in.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';
ReactDOM.render(<App />, document.getElementById('app'));

App.jsx

import React from 'react';
class App extends React.Component 
    render() 
        return (
            <div>
                Hello World!!!
            </div>
        );
    

export default App;

index.html

<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <title>React App</title>
</head>
<body>
<div id = "app"></div>
<script src = "index.js"></script>
</body>
</html>

【问题讨论】:

只需使用 npm install --save-dev webpack@3.10.0 降级到 webpack 3 【参考方案1】:

在 webpack 3 中,webpack 本身和它的 CLI 曾经在同一个包中,但在版本 4 中,它们将两者分开以更好地管理它们。

要解决您的问题,请按照错误提示安装 webpack-cli 包,方法是在命令行上运行 npm install webpack-cli --save-dev,就像安装任何其他包一样。

【讨论】:

您是否在当前目录设置为项目文件夹的情况下运行命令? 已安装 cli 和 webpack(npm install -g webpack)...仍然出现同样的错误,我在我的项目文件夹中... webpack 和 webpack-cli both 必须在本地安装最新版本。 @prakashkumar 你让它工作了吗?我有同样的问题【参考方案2】:

错误控制台只是告诉您如何解决问题。似乎webpack 模块依赖于webpack-cli 模块。要解决此问题,只需运行命令npm install webpack-cli --save。它会正常工作的。

【讨论】:

真的!!它会给你同样的错误吗?你能在node_modules文件夹中找到webpack-cli目录吗?【参考方案3】:

遇到了同样的问题,但上述解决方案没有运气 - 我尝试在全局和本地安装 webpack-cli,并且成功了。

npm install -g webpack-cli --save-dev

这为我解决了问题。至少够执行webpack --mode development.

【讨论】:

那么为什么这行得通...如果有人可以告诉我,会有所帮助:) 我的想法...我从 npm init 开始在我的本地项目中启动一个包。根据我正在观看的一些视频,我已经在这里以及全球安装了 webpack。全局安装时,这告诉命令行这是我要引用的 webpack。但是,当我安装 webpack-cli 时,我从未全局安装过。因此,在搜索它时,它正在寻找全局节点模块。对吗?【参考方案4】:

我经历了同样的例子并遇到了同样的问题。所以按照上面的答案,我首先运行了这个命令-

npm install -g webpack-cli --save-dev

什么也没发生,仍然面临同样的问题。

然后我运行了这个命令 -

npm install webpack-cli --save-dev

问题已解决,但我遇到了另一个错误。

原来在新的 Webpack 版本中他们也改变了模块属性。因此,您还需要在 webpack.config.js 文件中进行更改。

module: 
        rules: [
          
             test: /\.jsx?$/,
             exclude: /node_modules/,
             loader: 'babel-loader',
             query: 
                presets: ['es2015', 'react']
             
          
        ]
   

所以基本上 loadersmodule 对象内的 rules 取代。

我做了这个改变,它对我有用。

希望它对正在学习本教程的其他人有所帮助。

为了解决Invalid configuration object 问题,我参考了这个答案。 https://***.com/a/42482079/5892553

【讨论】:

如果我没记错的话,-g 不会全局安装软件包并忽略任何--save--save-dev 标志吗?这可能就是您在那里的第一个命令不起作用的原因 非常感谢你拯救了我的一天!【参考方案5】:

你需要安装 webpack 服务器,而不是 webpack-cli。看看this blog post 中的第二点。 试试npm i -g webpack@2.2.1

【讨论】:

【参考方案6】:

已为 Webpack 4 解决 - 我希望它适用于 webpack 2 及以后的版本

使用此命令也可以全局安装 webpack-cli

npm i -g webpack-cli

因此,您总共需要运行以下两个命令,一个用于本地,另一个用于全局安装 CLI。

npm i -D webpack-cli
npm i -g webpack-cli

它对我有用,我希望它也对你有用:)

【讨论】:

【参考方案7】:

第一步:第一次运行

npm i webpack webpack-dev-server webpack-cli --save-dev

第 2 步: 加载器被替换为规则,因此请更改 webpack.config.j 中的代码。让我们更改您的 webpack.config.js 文件:

var config = 
    entry: './main.js',
    output: 
        path:'./',
        filename: 'index.js',
    ,
    devServer: 
        inline: true,
        port: 8090
    ,
    module: 
        rules: [
            
                test: /\.jsx?$/,
                exclude: /node_modules/,
                loader: 'babel',
                query: 
                    presets: ['es2015', 'react']
                
            
        ]
    

module.exports = config;

第 3 步:现在转到您的 package.json 文件并在您的脚本选项中进行一些更改:

"scripts": 
    "start": "webpack-dev-server --mode development --open --hot",
    "build": "webpack --mode production"
,

第四步:现在运行

npm start

在控制台中

【讨论】:

确实第一次安装对我来说是为了避免全局 webpack 版本(之前安装的)和新项目的本地版本之间的冲突。虽然我认为这些是“webpack”世界的一个限制,但很快就会用 docker 解决这个问题【参考方案8】:

如果要使用webpack-dev-server,需要先安装webpackwebpack-cliwebpack 是一个存储编译器的模块,webpack-cli 是运行它的命令行界面。否则,如果您更喜欢webpack-command,这是webpack-cli 的更轻量级版本,您可能需要安装webpackwebpack-serve

【讨论】:

【参考方案9】:

我解决了这个问题。

npm i webpack-cli @webpack-cli/init

npx webpack-cli init

希望能帮到1

【讨论】:

以上是关于CLI 移动到一个单独的包中:webpack-cli的主要内容,如果未能解决你的问题,请参考以下文章

异常应该放在单独的包中吗?

接口应该放在单独的包中吗? [关闭]

如何使用 vue-cli 3 创建两个单独的包?

开始使用 webpack 4 的问题

在 Golang 和 MongoDB 中将路由拆分为单独的包

为测试创建一个单独的包