@sumor/api-middleware
Version:
API Middleware is a middleware for Node.JS. It can easily expose function to api, and validate parameters
84 lines (80 loc) • 1.77 kB
JavaScript
const style = `<style type="text/css">
html{
background: #273343;
color: #fff;
text-align: center;
padding: 30px;
}
.title{
opacity: .6;
padding-bottom: 10px;
}
.content{
padding-bottom: 10px;
}
.showDetail{
margin-top: 20px;
color: #03a9f4;
cursor: pointer;
}
.showDetail.show{
display: none;
}
.detailBox{
position: relative;
opacity: 0;
}
.detailBox.show{
opacity: 1;
}
pre{
border: 1px solid rgba(255,255,255,.6);
border-radius: 2px;
text-align: left;
height: 50%;
max-width: 500px;
margin: 0 auto;
margin-top: 20px;
overflow: auto;
padding: 10px;
}
.detailMessage{
font-size: 14px;
width: fit-content;
margin: 0 auto;
margin-top: 5px;
}
</style>`
const script = `<script>
function show(){
var oDiv = document.getElementsByTagName('div')[3];
oDiv.classList.add('show')
var oPre = document.getElementsByTagName('div')[4];
oPre.classList.add('show');
}
</script>`
export default ({ title, code, message, errors }) => {
let errorsHtml = ''
if (errors && errors.length > 0) {
const dataString = JSON.stringify(errors, null, 4)
errorsHtml = `<div class="detailBox">
<pre>${dataString}</pre>
<div class="detailMessage">请将该技术信息提供给应用管理员</div>
</div>`
}
return `<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
${style}
</head>
<body>
<h1>${title}</h1>
<div class="title">错误原因</div>
<div class="content">${code}</div>
<div class="content">${message}</div>
<div class="title showDetail" onclick="show()">点击查看详细错误信息</div>
${errorsHtml}
${script}
</body>
</html>`
}