更改“网站遇到意外错误。请稍后再试。'信息

时间:2020-04-19 22:19:12

标签: drupal drupal-8

我是Drupal的新用户。我不断收到此错误消息,并且我知道其背后的原因。基本上,这是由于SQL状态4000错误,也称为SQL死锁错误。在尝试解决此问题时,我想看看是否有办法更改此错误的文本-

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

我的问题很直截了当。我想将此文本更改为有意义的文本。有可能这样做吗?有关遵循步骤的任何准则?

1 个答案:

答案 0 :(得分:0)

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

  1. 为新的500错误启动页面创建一个自定义HTML页面。
  2. 创建一个基本服务工作程序,该工作程序缓存此页面并在出现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>