web-dev-qa-db-ja.com

Gulpエラー:gulp.hasTaskは関数ではありません

「gulp」を実行すると、次のメッセージが表示されます。 CLIバージョンとローカルバージョンが混在しているようですが、この問題の解決方法が実際にはわかりません。

cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp -v
[22:44:23] CLI version 2.0.1
[22:44:23] Local version 4.0.0
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp
[22:44:28] Using gulpfile ~/workspace/apps/web-ui/gulpfile.js
[22:44:28] Starting 'default'...
[22:44:28] 'default' errored after 5.41 ms
[22:44:28] TypeError: gulp.hasTask is not a function
    at /home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:23:22
    at Array.forEach (<anonymous>)
    at verifyTaskSets (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:17:11)
    at runSequence (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:130:2)
    at /home/cabox/workspace/apps/web-ui/gulpfile.js:187:5
    at taskWrapper (/home/cabox/workspace/apps/web-ui/node_modules/undertaker/lib/set-task.js:13:15)
    at bound (domain.js:301:14)
    at runBound (domain.js:314:12)
    at asyncRunner (/home/cabox/workspace/apps/web-ui/node_modules/async-done/index.js:55:18)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
cabox@box-codeanywhere:~/workspace/apps/web-ui$ ^C
27
user1187968

gulp v4には重大な変更があり、実行シーケンスパッケージにいくつかの問題が発生します。

Gulpfile.jsがないため、これまでのところ、実行シーケンスの代わりにgulpタスクでgulp.seriesとgulp.parallelを使用してみてください。

「task1、「task2」を完了できませんでした」などの種類のエラーが発生する場合があります。タスクの関数で、完了したコールバックを受け入れ、関数の最後にタスクでコールバックを呼び出します

例:

gulp.task('task1', gulp.series('task1-1', function (done) {
   // task 1 code here
    done();
}));

gulp.task('task2', gulp.series('task2-1', function (done) {
   // task 2 code here
    done();
}));

// Similarly Tasks 3 and 4 Code here

gulp.task('main', gulp.series('task1', 'task2', 'task3', 'task4', function (done) {
    done();
}));
30
Saurabh Pati

重要なのはローカルバージョンだけです。 gulp 4.0.0に重大な変更が導入されたため、ローカルパッケージを明示的に動作バージョンに戻すために、私がやったことを単純に行うことができます。

npm install --save-dev [email protected]

これは最近私に数回噛みついたし、私は再びここに戻ってくるでしょう、私は確信しています。

注:gulp 3.9.1の依存関係には、多くのセキュリティ上の脆弱性があります。これを行うべきではありません。

20
dvdrtrgn

同じ問題が発生し、gulp 3.9.1バージョンをインストールできませんでした。インストール後、4.0.0になりました。 -gと--save devに同じバージョンをインストールすると、hasTaskの問題が解決され、CLIおよびローカル用の3.9.1バージョンが提供されます。脆弱性を修正しないでください。ローカルで4.0.0に変更します。したがって、npm i gulp @3.9.1 -gnpm i gulp @3.9.1 --save-devをインストールするだけです

0
Ivan Doroshenko