webentwicklung-frage-antwort-db.com.de

DeprecationWarning: Tapable.plugin ist veraltet. Verwenden Sie stattdessen die neue API für `.hooks`

Ich habe versucht, das Vuetify-VueJS-Cordova-Beispiel auszuführen, bekam diesen Fehler jedoch nach npm run dev

knoten build/dev-server.js

Dev-Server wird gestartet ... (Knoten: 1024) DeprecationWarning: Tapable.plugin ist veraltet. Verwenden Sie stattdessen eine neue API für .hooks (Knoten: 1024) DeprecationWarning: Tapable.apply ist veraltet. Anruf stattdessen direkt auf das Plugin anwenden

Wie kann ich das beheben? Ich habe bereits alle NPM-Pakete aktualisiert und nicht geholfen.

10
Tom

Die Verfallsnachricht:

DeprecationWarning: Tapable.apply ist veraltet. Rufen Sie sich unter .__ an. Plugin direkt stattdessen
DeprecationWarning: Tapable.plugin ist veraltet. Verwenden Sie die neue API für .hooks stattdessen

Ist nur eine Warnung :

Hier ist eine kurze Zusammenfassung für alle, die mit dieser Nachricht in Berührung kommen.

Was ist diese Nachricht?

webpack 4 verwendet ein neues Plugin-System und verwirft die vorherigen APIs. Es gibt zwei neue Warnungen:

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

Dies sind Warnungen. Sie werden an die Konsole ausgegeben, um unsere Benutzer zu warnen, dass sie eine veraltete API verwenden, und sollten zur .__ migrieren. neueste.

Wie schlecht sind diese Warnungen?

Sie sind nur eine Textinformation, keine Fehler. Wenn Sie eine DeprecationWarning sehen, können Sie sie ignorieren bis Sie auf die nächste Hauptversion von Webpack aktualisieren müssen.

Es gibt also nichts, was Sie dagegen tun können oder sollten.


Ansonsten vertraue ich darauf, dass Sie eine Fehlermeldung erhalten wie:

/tmp/my-project> npm run dev

> [email protected] 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! [email protected] dev: `node build/dev-server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Sie sollten Ihren html-webpack-plugin auf neueste Version aktualisieren:

npm install --save-dev [email protected]

Und der Fehler sollte verschwinden.

12
acdcjunior

Es gibt mehrere Plugins, die diese Warnung für Webpack 4 verursachen könnten, da sie immer noch die alte Plugin-API verwenden. Sie müssen auf die neueste Version aktualisiert werden. Um herauszufinden, welche Plugins die Warnung auslösen, setzen Sie diese auf Ihre Webpack-Konfigurationsdatei:

process.traceDeprecation = true

Sie sehen eine detaillierte Stapelverfolgung wie folgt:

 (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

In diesem Fall bedeutet dies, dass friendly-errors-webpack-plugin für die Warnung verantwortlich ist.

Alternativ können Sie Ihren Knotenprozess ausführen, indem Sie das Flag --trace-deprecation hinzufügen.

Nachdem Sie herausgefunden haben, welches Plugin die Warnung verursacht, führen Sie ein Upgrade mit dem Package Manager durch. Die Warnung sollte verschwinden:

yarn upgrade friendly-errors-webpack-plugin

Wenn Sie die Warnungen zur Zurückweisung von Informationen nicht vollständig unterdrücken möchten (NICHT EMPFOHLEN), verwenden Sie process.noDeprecation = true.

Das funktionierte für mich, um das Problem schnell zu finden, ich hoffe, es hilft anderen.

6
Maikel Ruiz

Ich stand vor demselben Problem. Mit folgendem Befehl gelöst: -

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

NPM 6.4.1
Node 10.9.0
Webpack 4.22.0 
3
Nidhi

In meinem Fall wurde die Ablehnungsnotiz von der webpack-md5-hash Paket.

0
John Kennedy

In meinem Fall lag das Problem im Webpack-Cleanup-Plugin. Ich habe es behoben, nachdem ich dieses Plugin durch das clean-self-webpack-plugin ersetzt habe.

Ich bin auf dieses Problem gestoßen, als ich versuchte, den webpack-dev-server zweimal auszuführen, einer in einem Terminal und der andere in einem anderen Terminal. Durch Ausführen nur einer wurde das Problem behoben.

0
hsintuit