<!-- language-all: lang-js -->
# JavaScript (ES6), <strike>139</strike> <strike>135</strike> 140 + 1 bytes

(+1 is for `-p` flag with node in the console)

**fixed:**

    t=(n,m)=>(m=2*n+1,(A=Array).from(A(m),(d,i)=>A.from(A(m),(e,j)=>i==j?j==n?"O":"\\":m-1==j+i?"/":i==n?"-":j==n?"|":" ").join("")).join("\n"))

**usage:**

    t(3)
    /*
    \  |  /
     \ | / 
      \|/  
    ---O---
      /|\  
     / | \ 
    /  |  \
    */




**ungolfed:**

    var makeSun = function (n, m) {
        m = 2 * n + 1;    // there are 2*n+1 in each row/column
        return Array.from(Array(m), function (d, i) {
            return Array.from(Array(m), function (e, j) {
                // if i is j, we want to return a \
                // unless we're at the middle element
                // in which case we return the sun ("O")
                if (i == j) {
                    return j == n ? "O" : "\\";
                // the other diagonal is when m-1 is j+i
                // so return a forward slash, /
                } else if (m - 1 == j + i) {
                    return "/";
                // the middle row is all dashes
                } else if (i == n) {
                    return "-";
                // the middle column is all pipes
                } else if (j == n) {
                    return "|";
                // everything else is a space
                } else {
                    return " ";
                }
            }).join("");
        }).join("\n");
    }