首页 文章

webpack.validateSchema不是一个函数

提问于
浏览
38

Webpack突然抛出这个错误:

TypeError:webpack.validateSchema不是函数

星期五一切都很好,今天不工作 . 自周五以来没有新的提交要掌握 .

修剪过的NPM,没有用,删除了NPM文件夹并重新安装,没有骰子 . 检查了以前的分支机构,这些分支机构已经过了一个多星期没有从Master那里重新定位 . 还是一样 .

有人有想法吗?

10 回答

  • 9

    看起来像npm bug,因为 webpack-dev-server@2.1.0-beta.11 需要 webpack@^2.1.0-beta.26 但是npm无法安装它 .

    避免问题而不更新太多的最简单方法是将package.json中的依赖项更改为

    "webpack-dev-server": "2.1.0-beta.10",
    

    而不是像

    "webpack-dev-server": "^2.1.0-beta.9",
    

    版本之前的“^”char表示“与...兼容” . 删除它完全符合版本 .

    不要忘记之后运行 npm installnpm update .

  • 1

    我今天几乎与你同时遇到这个问题,结果发现webpack再次更新 .

    这是我做的修复它:

    首先,我运行 npm installnpm update 来查看结果 . 我运行了这两个命令,因为npm有一种奇怪的方式来报告未满足的依赖项,有时是错误的,当你重新运行 npm updatenpm install 时,你会发现未满足的依赖项不再是问题 .

    运行这些命令后,我注意到剩下的唯一消息是警告:

    npm WARN webpack-dev-server@2.1.0-beta.11 requires a peer of webpack@^2.1.0-beta.26 but none was installed.

    为了摆脱这种情况,我将 package.json 文件更改为 "webpack": "2.1.0-beta.26" 而不是 "webpack": "2.1.0-beta.25" 并运行了另一个 npm install .

    在此之后,当我尝试运行 npm start 时,我遇到了另一个错误,该错误表明我的webpack配置文件存在问题 . 在我的情况下,我去了我的开发环境的webpack配置文件(因为我还没有 生产环境 ),我发现了一个名为'outputPath'的无效参数的罪魁祸首 .

    我评论了这一行,现在我让一切正常 .

    希望这有所帮助,现在可能只是一个黑客,但希望它是朝着正确方向迈出的一步 .

    UPDATE:

    好的,所以我对所有事情都有点不对劲'working fine' . 事实证明我的一些装载机工作不正常; Bootstrap和其他一些东西没有被正确加载,破坏了我的风格 . 所以,为了让它回到我之前的位置,我删除了 node_modules 文件夹并使用_1066500中的以下内容运行 npm install

    "webpack": "2.1.0-beta.25",
    "webpack-dashboard": "^0.1.8",
    "webpack-dev-middleware": "^1.6.1",
    "webpack-dev-server": "2.1.0-beta.9",
    "webpack-md5-hash": "^0.0.5",
    "webpack-merge": "^0.15.0",
    

    希望像这样的讨论将帮助我们弄清楚如何正式推进新版本的webpack发布 .

  • 0

    我也得到了同样的错误 . 我在我的package.json文件中锁定了我的webpack-dev-server版本,这可以防止错误发生 . 但这并不能解决bug的根本问题 .

    这是我正在使用的webpack-dev-server的版本,但我确信以后的版本也可以使用:“webpack-dev-server”:“2.1.0-beta.9”,

  • 31

    当我删除^并使用确切的版本时,它对我有用 .

    "webpack": "2.1.0-beta.25",
    "webpack-dev-middleware": "^1.6.1",
    "webpack-dev-server": "^2.1.0-beta.9",
    "webpack-md5-hash": "^0.0.5",
    "webpack-merge": "^0.14.1"
    

    "webpack": "2.1.0-beta.25",
    "webpack-dev-middleware": "1.6.1",
    "webpack-dev-server": "2.1.0-beta.9",
    "webpack-md5-hash": "0.0.5",
    "webpack-merge": "0.14.1"
    
  • 4

    当我这样做时,它对我有用:

    Uninstall following package:

    npm卸载webpack webpack-dev-server --save -dev

    Install following Packages:

    npm install --save -dev webpack@3.10.0

    npm install --save -dev webpack-cli@2.0.10

    npm install --save -dev webpack-dev-server@2.9.7

  • 1

    好的,在这里更新 .

    尝试过你们中的一些人建议的,不幸的是,这让我更深入地了解了破坏模块加载器的漏洞 .

    最后,我更新到 "webpack": "^2.1.0-beta.26""webpack-dev-server": "^2.1.0-beta.11" . 在那之后,发现有破裂的变化,导致 loaders 破裂 - https://github.com/webpack/webpack/releases .

    简而言之,在你的webpack配置中,将 loaders: [ ... ] 更改为 rules : [ ... ] ,并在所有加载器声明中,将"-loader"追加到字符串值, { test: /node_modules\/i18n-iso-countries\/(de|es|nl|sv)\.js$/, loader: 'null-loader' }, { test: /\.coffee$/, loader: 'coffee-loader' }, { test: /\.ts$/, loader: ['awesome-typescript-loader']} 等 .

    对我来说 . 希望这有助于其他任何人遇到这个问题 .

  • 0

    我通过运行此命令使其工作:

    npm install --save-dev webpack-dev-server@beta webpack@beta
    
  • 5

    this GitHub issue中所述,您需要将webpack更新为 webpack 2.1.0-beta.26 或更高版本 . 由于最后一个v2.1版本是beta.28,你应该要求 webpack@^2.1.0-beta.28 .

    请注意,beta.26中引入的一个重大变化是您需要指定加载器的全名,例如用 loader: 'babel-loader' 替换 loader: 'babel' .

  • 6

    当我们将angular / cli升级到1.6.3并且当我们测试ng -v时,我们得到了对webpack的错误 . 所以我们碰巧卸载webpack,清理缓存然后再全局安装webpack . 它解决了这个问题

  • 5

    我遇到了这个问题,因为我安装了一个旧版本的webpack,它与项目特定的webpack有些冲突 .

    我首先运行以下命令卸载全局(较旧)的webpack:

    npm uninstall webpack -g
    

    然后我运行了我的项目特定的webpack . 在Windows上webpack.cmd驻留在node_modules.bin \中,但是如果你通过npm任务运行webpack,npm将自动搜索.bin文件夹,因此不需要明确指定该路径 .

    我的package.json中正常运行的npm运行任务如下所示:

    "scripts": {
          "webpack": "webpack -w --config ./config/dev.js --progress"
      }
    

相关问题