TypeError:无法读取Ionic CLI 2.2.1 + Gulp 4上未定义的属性'serve:before'

问题描述 投票:1回答:1

我正在开发具有很多遗留依赖性的Web应用程序。

关于更新某些软件包的试验,我更新了gulp / gulpfile.js,然后修补并运行。 Gulp的版本为3.5,现在为4.0。

顺便说一句,通过运行ionic serve --address localhost --nobrowser在终端中引发的错误是:

 Error: spawn cordova EACCES
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3) 

Mind letting us know? https://github.com/driftyco/ionic-cli/issues

******************************************************
 Dependency warning - for the CLI to run correctly,      
 it is highly recommended to install/upgrade the following:     

 Please update your Cordova CLI to version  >=4.2.0 `npm install -g cordova`

******************************************************

TypeError: Cannot read property 'serve:before' of undefined
    at Object.runWithGulp (/usr/lib/node_modules/ionic/lib/cli.js:237:17)
    at Object.runr (/usr/lib/node_modules/ionic/lib/cli.js:194:18)
    at /usr/lib/node_modules/ionic/lib/cli.js:54:9
    at _fulfilled (/usr/lib/node_modules/ionic/node_modules/q/q.js:787:54)
    at /usr/lib/node_modules/ionic/node_modules/q/q.js:816:30
    at Promise.promise.promiseDispatch (/usr/lib/node_modules/ionic/node_modules/q/q.js:749:13)
    at /usr/lib/node_modules/ionic/node_modules/q/q.js:557:44
    at flush (/usr/lib/node_modules/ionic/node_modules/q/q.js:108:17)
    at process._tickCallback (internal/process/next_tick.js:61:11)


Cannot read property 'serve:before' of undefined (CLI v2.2.1)

Your system information:

Cordova CLI: undefined
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Linux 5.4
Node Version: v10.16.3
Xcode version: Not installed

然后,是gulpfile.js的一些补丁:

gulp.task('build', gulp.series('bundle', 'copyTask', 'revTask', 'revReplaceTask'));
gulp.task('default', gulp.series('sassTask', 'cleanTask', 'build', 'watchTask'));
gulp.task('serve:before', gulp.series('cleanTask', 'watchTask', 'build'));

在修补之前,gulp.task('serve:before'[...])运作良好。我想这与Ionic 2.2.1 CLI有关。

如果有人可以通过提示或建议来帮助我解决不匹配的问题,我会很高兴的。

ionic2 gulp legacy
1个回答
0
投票

当我将Node升级到v12时,这发生在我身上,这迫使我将Gulp升级到v4。

对我有用的解决方案是:

转到npm \ node_modules \ ionic \ lib \ cli.js(无论位于何处)。

更改cli.js中的以下几行:

237: if (true || gulp.tasks[beforeHook]) {
257: if (true || gulp.tasks[afterHook]) {
270: return Q.nfcall(null/*gulp.start.bind(gulp)*/, hookName)

基本上,原因是Gulp v4中不存在gulp.tasks和gulp.start。

通过真实||在第一次出现时,gulp.tasks将不会运行,而在最后一次出现时将null放置,则gulp.start将不会运行。

我希望这可以帮助下一个遇到此问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.