diff --git a/packages/@vue/cli-shared-utils/lib/logger.js b/packages/@vue/cli-shared-utils/lib/logger.js index c0afeea1d6..b154a302b0 100644 --- a/packages/@vue/cli-shared-utils/lib/logger.js +++ b/packages/@vue/cli-shared-utils/lib/logger.js @@ -3,6 +3,8 @@ const stripAnsi = require('strip-ansi') const readline = require('readline') const EventEmitter = require('events') +const { stopSpinner } = require('./spinner') + exports.events = new EventEmitter() function _log (type, tag, message) { @@ -46,6 +48,7 @@ exports.warn = (msg, tag = null) => { } exports.error = (msg, tag = null) => { + stopSpinner() console.error(format(chalk.bgRed(' ERROR ') + (tag ? chalkTag(tag) : ''), chalk.red(msg))) _log('error', tag, msg) if (msg instanceof Error) { diff --git a/packages/@vue/cli-shared-utils/lib/spinner.js b/packages/@vue/cli-shared-utils/lib/spinner.js index b8e5abdd0d..979657cfd7 100644 --- a/packages/@vue/cli-shared-utils/lib/spinner.js +++ b/packages/@vue/cli-shared-utils/lib/spinner.js @@ -25,6 +25,10 @@ exports.logWithSpinner = (symbol, msg) => { } exports.stopSpinner = (persist) => { + if (!spinner.isSpinning) { + return + } + if (lastMsg && persist !== false) { spinner.stopAndPersist({ symbol: lastMsg.symbol, diff --git a/packages/@vue/cli/lib/util/ProjectPackageManager.js b/packages/@vue/cli/lib/util/ProjectPackageManager.js index a5063f494a..fbc0435c6d 100644 --- a/packages/@vue/cli/lib/util/ProjectPackageManager.js +++ b/packages/@vue/cli/lib/util/ProjectPackageManager.js @@ -258,6 +258,9 @@ class PackageManager { const url = `${registry.replace(/\/$/g, '')}/${packageName}` try { metadata = (await request.get(url, { headers })).body + if (metadata.error) { + throw new Error(metadata.error) + } metadataCache.set(metadataKey, metadata) return metadata } catch (e) {