DeprecationWarning:不推荐使用Tapable.plugin。在`.hooks`上使用新的API

时间:2018-04-20 13:16:49

标签: cordova npm webpack vue.js vuetify.js

我尝试运行Vuetify VueJS Cordova example,但在npm run dev

之后出现此错误
  
    

node build / dev-server.js

         

启动dev服务器...(节点:1024)DeprecationWarning:不推荐使用Tapable.plugin。请改用.hooks上的新API     (node:1024)DeprecationWarning:不推荐使用Tapable.apply。呼叫     直接在插件上申请

  

如何解决? 我已经更新了所有NPM包,没有帮助。

6 个答案:

答案 0 :(得分:16)

弃用邮件:

  

DeprecationWarning:不推荐使用Tapable.apply。打电话申请   直接插件而不是   DeprecationWarning:不推荐使用Tapable.plugin。使用新的API   而是R2(pls.fa,ncomp=1:xcomp)

just a warning

  

以下是每个遇到此消息的快速摘要。

     

这是什么消息?

     

webpack 4正在使用新的插件系统并弃用以前的API。有2个新警告:

Intercept)      1 comps      2 comps      3 comps      4 comps      5 comps      6 comps      7 comps      8 comps      9 comps  
  -0.009828     0.551053     0.570584     0.574790     0.580414     0.583354     0.585812     0.580690     0.581536     0.595441  
   10 comps  
   0.596096  
     

这些是警告。它们被输出到控制台以警告我们的用户他们正在使用过时的API并且应该迁移到   最新。

     

这些警告是

     

它们只是文字信息,而不是错误。 如果您看到.hooks,则可以忽略它   直到你必须更新到webpack的下一个主要版本。

所以你没有或应该做些什么。

除此之外,我相信您收到的错误如下:

DeprecationWarning: Tapable.apply is deprecated. Call apply on the plugin directly instead
DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead

您应该将DeprecationWarning更新为latest version

/tmp/my-project> npm run dev

> my-project2@1.0.0 dev /tmp/my-project/my-project
> node build/dev-server.js

> Starting dev server...
(node:29408) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
(node:29408) DeprecationWarning: Tapable.apply is deprecated. Call apply on the plugin directly instead
/tmp/my-project/node_modules/html-webpack-plugin/lib/compiler.js:81
        var outputName = compilation.mainTemplate.applyPluginsWaterfall('asset-path', outputOptions.filename, {
                                                  ^

TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function
    at /tmp/my-project/node_modules/html-webpack-plugin/lib/compiler.js:81:51
    at compile (/tmp/my-project/node_modules/webpack/lib/Compiler.js:242:11)
    at hooks.afterCompile.callAsync.err (/tmp/my-project/node_modules/webpack/lib/Compiler.js:487:14)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/tmp/my-project/node_modules/tapable/lib/HookCodeFactory.js:24:12), <anonymous>:15:1)
    at AsyncSeriesHook.lazyCompileHook [as _callAsync] (/tmp/my-project/node_modules/tapable/lib/Hook.js:35:21)
    at compilation.seal.err (/tmp/my-project/node_modules/webpack/lib/Compiler.js:484:30)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/tmp/my-project/node_modules/tapable/lib/HookCodeFactory.js:24:12), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook [as _callAsync] (/tmp/my-project/node_modules/tapable/lib/Hook.js:35:21)
    at hooks.optimizeAssets.callAsync.err (/tmp/my-project/node_modules/webpack/lib/Compilation.js:966:35)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/tmp/my-project/node_modules/tapable/lib/HookCodeFactory.js:24:12), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook [as _callAsync] (/tmp/my-project/node_modules/tapable/lib/Hook.js:35:21)
    at hooks.optimizeChunkAssets.callAsync.err (/tmp/my-project/node_modules/webpack/lib/Compilation.js:957:32)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/tmp/my-project/node_modules/tapable/lib/HookCodeFactory.js:24:12), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook [as _callAsync] (/tmp/my-project/node_modules/tapable/lib/Hook.js:35:21)
    at hooks.additionalAssets.callAsync.err (/tmp/my-project/node_modules/webpack/lib/Compilation.js:952:36)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/tmp/my-project/node_modules/tapable/lib/HookCodeFactory.js:24:12), <anonymous>:6:1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! my-project@1.0.0 dev: `node build/dev-server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the my-project@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

错误应该消失。

答案 1 :(得分:10)

有几个插件可能会在Webpack 4上引发此警告,因为它们仍在使用旧的插件API,因此需要将其升级到最新版本。要查找导致该警告的插件,请将其放在您的webpack配置文件顶部:

process.traceDeprecation = true

您将看到类似以下的详细堆栈跟踪:

 (node:10213) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
   at FriendlyErrorsWebpackPlugin.apply (./node_modules/friendly-errors-webpack-plugin/src/friendly-errors-plugin.js:39:14)
   at webpack (./node_modules/webpack/lib/webpack.js:37:12)
   at processOptions (./node_modules/webpack-cli/bin/webpack.js:436:16)
   at <anonymous>
   at process._tickCallback (internal/process/next_tick.js:160:7)
   at Function.Module.runMain (module.js:703:11)
   at startup (bootstrap_node.js:193:16)
   at bootstrap_node.js:617:3

在这种情况下,这意味着friendly-errors-webpack-plugin是警告的责任。

或者,您可以添加--trace-deprecation标志来运行节点进程。

使用软件包管理器找到哪个插件引起警告升级后,警告应该消失:

yarn upgrade friendly-errors-webpack-plugin

如果您不想完全禁止这样的弃用警告(不推荐),请使用process.noDeprecation = true

这有助于我快速找到问题,希望对其他人有所帮助。

答案 2 :(得分:4)

我面临着同样的问题。使用以下命令解决:-

  

npm install --save-dev extract-text-webpack-plugin @ next

NPM 6.4.1
Node 10.9.0
Webpack 4.22.0 

答案 3 :(得分:0)

就我而言,问题出在webpack-cleanup-plugin中。在将这个插件替换为clean-self-webpack-plugin后,我已对其进行了修复。

答案 4 :(得分:0)

当我尝试两次运行webpack-dev-server时遇到了这个问题,一个运行在一个终端中,另一个运行在另一个终端中。只运行一个就解决了这个问题。

答案 5 :(得分:0)

在我的情况下,webpack-md5-hash软件包提出了弃用通知。