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

Tom*_*Tom 17 npm cordova webpack vue.js vuetify.js

我试图运行Vuetify VueJS Cordova示例但之后出现此错误npm run dev

node build/dev-server.js

启动dev server ...(节点:1024)DeprecationWarning:不推荐使用Tapable.plugin..hooks改为使用新的API (节点:1024)DeprecationWarning:不推荐使用Tapable.apply.直接调用插件直接调用

怎么解决?我已经更新了所有NPM包,没有帮助.

acd*_*ior 18

弃用消息:

DeprecationWarning:不推荐使用Tapable.apply.直接调用插件,而不
推荐使用DeprecationWarning:Tapable.plugin..hooks而是使用新的API

是否只是一个警告:

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

这是什么消息?

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

DeprecationWarning: Tapable.apply is deprecated. Call apply on the plugin directly instead
DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
Run Code Online (Sandbox Code Playgroud)

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

这些警告有多糟糕

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

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


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

/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.
Run Code Online (Sandbox Code Playgroud)

您应该将您更新html-webpack-plugin最新版本:

npm install --save-dev html-webpack-plugin@3
Run Code Online (Sandbox Code Playgroud)

错误应该消失.

  • 注意:我也在他们的仓库中创建了一个PR来解决这个问题:https://github.com/vuetifyjs/cordova/pull/18 (2认同)

Mai*_*uiz 14

有几个插件可能会在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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它意味着friendly-errors-webpack-plugin负责警告.

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

在找到哪个插件导致警告升级后,使用您的包管理器,警告应该消失:

yarn upgrade friendly-errors-webpack-plugin

如果你不想完全压制像这样的弃用警告(不推荐),请使用 process.noDeprecation = true

这对我来说很快就能找到问题,希望对别人有所帮助.


Nid*_*dhi 5

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

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

NPM 6.4.1
Node 10.9.0
Webpack 4.22.0 
Run Code Online (Sandbox Code Playgroud)