stringify.js 1.2 KB
Newer Older
1 2 3 4
const path = require('path')

const formatErrors = require('./format-errors')

fxy060608's avatar
fxy060608 已提交
5 6 7
module.exports = function stringify (errors, type) {
  let hasUnknownErr = false
  const msg = Array.from(
8 9 10 11 12 13 14
    new Set(
      errors.map(err => {
        const formatError = formatErrors[err.name]
        if (formatError) {
          const result = formatError(err)
          if (result) {
            if (typeof result === 'string') {
fxy060608's avatar
fxy060608 已提交
15
              hasUnknownErr = true
16 17
              return result
            } else {
fxy060608's avatar
fxy060608 已提交
18 19 20 21 22 23
              if (err.module.resource) {
                const file = path.relative(process.env.UNI_INPUT_DIR, err.module.resource).split('?')[0]
                if (file === 'pages.json') {
                  result.line = 1
                }
                return `${result.message} at ${file}:${result.line || 1}`
24
              }
fxy060608's avatar
fxy060608 已提交
25
              return `${result.message}`
26 27 28 29
            }
          } else if (result === false) {
            return '' // skip
          }
fxy060608's avatar
fxy060608 已提交
30 31
        } else {
          hasUnknownErr = true
32 33 34 35
        }
        return err.message
      })
    )
fxy060608's avatar
fxy060608 已提交
36 37 38 39 40 41 42 43 44 45
  ).filter(msg => !!msg).join('\n')

  if (type === 'error' && hasUnknownErr) {
    return {
      type: 'onErrors',
      msg
    }
  }

  return msg
46
}