运行使用CLI和Webpack 4构建的应用程序时出错

时间:2018-04-01 11:03:25

标签: webpack aurelia aurelia-cli

我使用CLI和Webpack构建了Aurelia应用程序。然后升级两者。运行au runau run --env dev --watch我在控制台中收到以下内容:

d:\projects\aurelia\aurelia-app\node_modules\tapable\lib\Tapable.js:63
                throw new Error(`Plugin could not be registered at '${name}'. Hook was not found.\n` +
        ^ Error: Plugin could not be registered at 'module'. Hook was not found. BREAKING CHANGE: There need to exist a hook at 'this.hooks'. To create a compatiblity layer for this hook, hook into 'this._pluginCompat'.
    at Compiler.plugin (d:\projects\aurelia\aurelia-app\node_modules\tapable\lib\Tapable.js:63:9)
    at Compiler.deprecated [as plugin] (internal/util.js:52:15)
    at ModulesInRootPlugin.apply (d:\projects\aurelia\aurelia-app\node_modules\enhanced-resolve\lib\ModulesInRootPlugin.js:15:11)
    at Compiler.apply (d:\projects\aurelia\aurelia-app\node_modules\tapable\lib\Tapable.js:71:16)
    at Compiler.deprecated [as apply] (internal/util.js:52:15)
    at PathPlugin.apply (d:\projects\aurelia\aurelia-app\node_modules\awesome-typescript-loader\src\paths-plugin.ts:120:13)
    at webpack (d:\projects\aurelia\aurelia-app\node_modules\webpack\lib\webpack.js:37:12)
    at Object.<anonymous> (d:\projects\aurelia\aurelia-app\aurelia_project\tasks\build.ts:19:16)
    at Module._compile (module.js:635:30)
    at Object.require.extensions..ts (d:\projects\aurelia\aurelia-app\node_modules\aurelia-cli\lib\project.js:239:19)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (d:\projects\aurelia\aurelia-app\aurelia_project\tasks\run.ts:3:15)

我读到了Webpack 4中破坏与插件/加载器兼容性的更改。但不确定 awesome-typescript-loader 是否兼容,以及此加载器是否导致问题。相关的环境信息:

  • node 8.9.1
  • npm 5.7.1
  • aurelia-cli 0.33.1
  • webpack 4.4.1
  • awesome-typescript-loader 4.0.1

TIA提供任何帮助, 尼

2 个答案:

答案 0 :(得分:0)

如果不知道你的加载器的完整列表,我无法猜出它是哪一个 - 你可以通过查看哪些加载器有一个主要版本来推断它,比如,过去2-3周。

它可能是awesome-typescript-loader,虽然它们似乎已经更新了它。当webpack 4发布时,我转移到了ts-loader,解决了这个问题。

升级到webpack 4的最简单方法是从头开始或多或少地构建webpack.config,逐个复制部分并在添加下一部分之前使其工作。

删除所有text / css / json的东西,然后从打字稿开始,然后从那里开始工作。值得麻烦的是,因为webpack 4 快速

您将遇到/想要考虑的一些事情:

  • 各种优化插件(例如常见的块)已移至另一个命名空间
  • 源地图大部分都被打破(再次)
  • 您需要将webpack配置的mode属性设置为“development”或“production”(不再是cli参数)
  • ts-loader已经赶上(如果没有超过)awesome-typescript-loader速度,这最初是后者的主要卖点;可能是时候回到“官方”了
  • 某些插件在导入时似乎有点不同,例如我注意到我需要import HtmlWebpackPlugin from "html-webpack-plugin";代替import * as HtmlWebpackPlugin from "html-webpack-plugin";
  • 升级是一种僵尸病毒。您需要立即升级所有内容

答案 1 :(得分:0)

就我而言,这是由不支持Webpack 4的旧插件html-webpack-inline-chunk-plugin引起的。删除它后,错误消失了。

此外,还有两个可能对未来的人们有所帮助: