diff --git a/lib/middleware/onerror.js b/lib/middleware/onerror.js index f3f44e5834..6981be7754 100644 --- a/lib/middleware/onerror.js +++ b/lib/middleware/onerror.js @@ -15,19 +15,17 @@ module.exports = async (ctx, next) => { try { await next(); } catch (err) { - let message; + let message = err; if (err.name && (err.name === 'HTTPError' || err.name === 'RequestError')) { message = `${err.message}: target website might be blocking our access, you can host your own RSSHub instance for a better usability.`; } else if (err instanceof Error) { message = err.stack; - } else { - message = err; } logger.error(`Error in ${ctx.request.path}: ${message}`); ctx.set({ 'Content-Type': 'text/html; charset=UTF-8', }); - ctx.body = `RSSHub 发生了一些意外:
${message}
`; + ctx.body = `Looks like something went wrong in RSSHub:
${message}
`; ctx.status = 404; if (!ctx.debug.errorPaths[ctx.request.path]) { diff --git a/lib/routes/test/index.js b/lib/routes/test/index.js index 7b4f02924b..2d668b6f44 100644 --- a/lib/routes/test/index.js +++ b/lib/routes/test/index.js @@ -1,10 +1,17 @@ const config = require('@/config'); let cacheIndex = 0; +const got = require('@/utils/got'); module.exports = async (ctx) => { - if (ctx.params.id === '0') { + if (ctx.params.id === 'error') { throw Error('Error test'); } + if (ctx.params.id === 'httperror') { + await got({ + method: 'get', + url: `https://google.com/404`, + }); + } let item = []; if (ctx.params.id === 'long') { item.push({ diff --git a/test/middleware/error.js b/test/middleware/error.js index 4308ac8968..2172b025de 100644 --- a/test/middleware/error.js +++ b/test/middleware/error.js @@ -8,8 +8,18 @@ afterAll(() => { describe('error', () => { it(`error`, async () => { - const response = await request.get('/test/0'); + const response = await request.get('/test/error'); expect(response.status).toBe(404); - expect(response.text).toMatch(/RSSHub 发生了一些意外:
Error: Error test/);
+        expect(response.text).toMatch(/Looks like something went wrong in RSSHub: 
Error: Error test/);
+    });
+});
+
+describe('httperror', () => {
+    it(`httperror`, async () => {
+        const response = await request.get('/test/httperror');
+        expect(response.status).toBe(404);
+        expect(response.text).toMatch(
+            /Looks like something went wrong in RSSHub: 
Response code 404 \(Not Found\): target website might be blocking our access, you can host your own RSSHub instance<\/a> for a better usability\./
+        );
     });
 });
diff --git a/test/middleware/parameter.js b/test/middleware/parameter.js
index cf910ed644..a176a66d18 100644
--- a/test/middleware/parameter.js
+++ b/test/middleware/parameter.js
@@ -110,7 +110,7 @@ describe('empty', () => {
     it(`empty`, async () => {
         const response1 = await request.get('/test/empty');
         expect(response1.status).toBe(404);
-        expect(response1.text).toMatch(/RSSHub 发生了一些意外: 
Error: this route is empty/);
+        expect(response1.text).toMatch(/Looks like something went wrong in RSSHub: 
Error: this route is empty/);
 
         const response2 = await request.get('/test/1?limit=0');
         expect(response2.status).toBe(200);
@@ -132,7 +132,7 @@ describe('wrong_path', () => {
     it(`wrong_path`, async () => {
         const response = await request.get('/wrong');
         expect(response.status).toBe(404);
-        expect(response.text).toMatch(/RSSHub 发生了一些意外: 
Error: wrong path/);
+        expect(response.text).toMatch(/Looks like something went wrong in RSSHub: 
Error: wrong path/);
     });
 });
 
diff --git a/test/middleware/template.js b/test/middleware/template.js
index b93b37a7c1..1a8b217708 100644
--- a/test/middleware/template.js
+++ b/test/middleware/template.js
@@ -60,7 +60,7 @@ describe('template', () => {
     it(`.json`, async () => {
         const response = await request.get('/test/1.json');
         expect(response.status).toBe(404);
-        expect(response.text).toMatch(/RSSHub 发生了一些意外: 
Error: JSON output had been removed/);
+        expect(response.text).toMatch(/Looks like something went wrong in RSSHub: 
Error: JSON output had been removed/);
     });
 
     it(`long title`, async () => {