【问题标题】:Change 'The website encountered an unexpected error. Please try again later.' message更改 '网站遇到意外错误。请稍后再试。'信息
【发布时间】:2020-08-02 08:40:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: drupal drupal-8


    【解决方案1】:

    这个错误页面不是 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. 将您的服务人员添加到您主题的html.html.twig 文件的<body>(或其他类似位置):
    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-11
      • 2011-06-11
      • 2022-07-20
      • 1970-01-01
      • 2017-05-17
      • 2019-11-30
      • 2022-06-22
      • 1970-01-01
      相关资源
      最近更新 更多