首页 > 解决方案 > 更改 '网站遇到意外错误。请稍后再试。' 信息

问题描述

我是一个新的 Drupal 用户。我经常收到此错误消息,我知道这背后的原因。基本上这是因为 SQL 状态 4000 错误,也称为 SQL 死锁错误。当我尝试解决这个问题时,我想看看是否有办法改变这个错误的文本——

“网站遇到意外错误。请稍后再试”。

我的问题很直接。我想将此文本更改为有意义的文本。有可能吗?关于要遵循的步骤的任何指导方针?

标签: drupaldrupal-8

解决方案


这个错误页面不是 Drupal 容易控制的。它通常由服务器的 500 响应产生。但是,我已经设法在我的一个网站上使用service worker做到了这一点。

  1. 为新的 500 错误启动页面创建自定义 HTML 页面。
  2. 创建一个基本的 service worker 缓存这个页面并在 500 错误的情况下返回它。

例子:

const filesToCache = [
  '/500.html'
];

const staticCacheName = '0.0';

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(staticCacheName)
    // Cache all of the configured files.
    .then(cache => {
      return cache.addAll(filesToCache);
    })
    // Force an update of the service worker, if need be.
    .then(function() {
      return self.skipWaiting();
    })
  );
});

// Delete outdated cache.
self.addEventListener('activate', event => {
  const cacheWhitelist = [staticCacheName];
  event.waitUntil(
    caches.keys().then(cacheNames => {
      return Promise.all(
        cacheNames.map(cacheName => {
          if (cacheWhitelist.indexOf(cacheName) === -1) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});

// Serve appropriate error pages from cache.
self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
    .then(response => {
      if (response) {
        return response;
      }
      return fetch(event.request)
      .then(response => {
        if (response.status === 500) {
          return caches.match('/500.html');
        }

        return caches.open(staticCacheName)
      });
    })
  );
});

  1. 将您的服务人员添加到<body>html.html.twig的主题文件中(或其他类似的地方):
<script>
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', () => {
        navigator.serviceWorker.register('/service-worker.js')
        .then(swReg => {
          console.log('Service Worker is registered', swReg);
        })
        .catch(err => {
          console.error('Service Worker Error', err);
        });
      });
    }
  </script>

推荐阅读