diff --git a/src/cli/index.js b/src/cli/index.js index 93ef6ed091..e6a047fff3 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -339,10 +339,18 @@ function onUnexpectedError(err: Error) { log.push(`Trace: ${indent(err.stack)}`); const errorLoc = path.join(config.cwd, 'yarn-error.log'); - fs.writeFileSync(errorLoc, log.join('\n\n') + '\n'); - - reporter.error(reporter.lang('unexpectedError', err.message)); - reporter.info(reporter.lang('bugReport', errorLoc)); + try { + fs.writeFileSync(errorLoc, log.join('\n\n') + '\n'); + + reporter.error(reporter.lang('unexpectedError', err.message)); + reporter.info(reporter.lang('bugReport', errorLoc)); + } catch (err) { + if (err.code === 'EACCES') { + reporter.error(reporter.lang('noFilePermission', err.path)); + } else { + console.error(err); + } + } } //