记一次解决过程:TypeError: Class constructor ServeCommand cannot be invoked without ‘new‘

      1.前言:

      npm install后,npm run dev, 报TypeError: Class constructor ServeCommand cannot be invoked without ‘new‘, 这一看就是webpack-cli相关的版本冲突造成的, 通过baidu,google,stackoverflow查到也是保持webpack-dev-server版本为"~3“之类的, 也解决不了我的问题,试了npm的版本12,14,16都没用, 已经一个星期了,看来只能我自己解决了。 

    2.解决过程:

通过全局查找到ServeCommand在node_modules/@webpack-cli/serve文件夹下,类ServeCommand仅用一个apply的方法, 报错的地方是node_modules/webpack-cli/lib/utils/prompt-installation.js的 return func(...args),这里肯定是不对的。 所以,这里的版本肯定是冲突的, 所以去npm里查找了一下 @webpack-cli/serve的各个版本和源码,最终确定以下版本是可用的:

    "@webpack-cli/serve": "~1.0.1",

    "webpack": "~4.30.0",

    "webpack-cli": "~4.1.0",

    "webpack-dev-middleware": "~3.6.2",

    "webpack-dev-server": "^3.11.3",

    "webpack-hot-middleware": "~2.24.3"

如果不可用, 可以先卸载@webpack-cli/serve和 "webpack-cli"再重新安装

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为在调用一个类的构造函数时,没有使用关键字“new”。正确的调用方式应该是使用“new”关键字来创建一个类的实例,例如: ``` const myCommand = new ServeCommand(); ``` 这样就可以避免这个错误了。 ### 回答2: Typeerror是一种错误类型,它通常意味着程序员在代码中使用了不同类型的值,而这些值不兼容,导致运行时出现错误。在本例中,TypeError: class constructor servecommand cannot be invoked without 'new',意味着在代码中使用了一个类构造函数 servecommand,并且没有使用new进行调用。 在JavaScript中,当使用类构造函数创建新的对象实例时,必须使用new关键字。如果没有使用new关键字,会导致类构造函数被当做普通函数调用,可能会返回未定义的值,或者出现其他一些错误。 因此,如果你在代码中看到这个错误,你需要检查你的代码是否已经使用了new关键字来调用类构造函数。如果没有使用,则需要添加new关键字来创建一个新的对象实例,并解决这个错误。 在实际编程过程中,Typeerror: class constructor servecommand cannot be invoked without 'new'错误可能会出现在使用类的过程中。所以,我们要注意代码规范,保证使用类构造函数时一定要使用new关键字来进行调用,避免出现这种错误,提高代码的可读性和代码健壮性。 ### 回答3: 这个错误意味着我们在调用一个类构造函数时,没有使用正确的语法。在 JavaScript 中,当我们想要创建一个类的实例时,必须使用关键字 'new'。如果我们没有使用 'new',那么 JavaScript 会认为我们尝试调用一个函数,并且会抛出一个 TypeError。 例如,假设我们有以下类定义: ``` class MyServer { constructor() { this.commands = []; } serveCommand(command) { this.commands.push(command); } } ``` 如果我们想要创建一个 MyServer 的实例并调用其 serveCommand 函数,正确的语法应该是这样的: ``` const myServer = new MyServer(); myServer.serveCommand('example'); ``` 但是如果我们意外省略了 'new',如下所示: ``` const myServer = MyServer(); myServer.serveCommand('example'); ``` 就会出现 'TypeError: class constructor servecommand cannot be invoked without 'new'' 这个错误。 为了解决这个错误,我们只需要确保在创建类实例时使用 'new' 关键字即可。 总结起来,这个错误的原因是我们在创建类实例时省略了 'new' 关键字。避免这个错误的方法是要得在创建类实例时使用 'new'。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值