2016-12-29 56 views
1

我試圖添加一個服務工作人員到我的Rails應用程序與serviceworker寶石。ExecJS :: RuntimeError:SyntaxError:意外的標記:名稱(catch)(行:41,col:8,pos:1392)

我一直在關注本指南https://rossta.net/blog/offline-page-for-your-rails-application.html並開始接收標題中列出的錯誤。

我回顧了其他類似的問題,但大多數都是由於語法錯誤。因爲這篇文章Rails 5 Heroku deploy error: ExecJS::ProgramError: SyntaxError: Unexpected token: name (autoRegisterNamespace)

我的錯誤是由於通過serviceworker gem文件提供的令牌名稱(catch)。

這裏是我的代碼,其中的錯誤發生...

function onFetch(event) { 
    // Fetch from network, fallback to cached content, then offline.html for same-origin GET requests 
    var request = event.request; 

    if (!request.url.match(/^https?:\/\/example.com/)) { return; } 
    if (request.method !== 'GET') { return; } 

    event.respondWith(
    fetch(request).          // first, the network 
     .catch(function fallback() { 
      caches.match(request).then(function(response) { // then, the cache 
      response || caches.match("/offline.html.erb");  // then, /offline cache 
      }) 
     }) 
    ); 

我理解的錯誤是在.catch,我只是不知道如何解決這個問題。

任何幫助非常感謝,謝謝!

+0

這是它的()在獲取結束時導致錯誤。我忽略了它,因爲它沒有提出有關語法問題。謝謝! –

回答

1

帶兩個點的語法錯誤。換行有時會讓人很難注意到。

event.respondWith(
fetch(request). // Dot here and then... 
    .catch(function fallback() { // ... the one at beginning of line as well causes the issue... 
     caches.match(request).then(function(response) { // then, the cache 
     response || caches.match("/offline.html.erb");  // then, /offline cache 
     }) 
    }) 
); 

應該

event.respondWith(
fetch(request)          // remove dot 
    .catch(function fallback() { 
     caches.match(request).then(function(response) { // then, the cache 
     response || caches.match("/offline.html.erb");  // then, /offline cache 
     }) 
    }) 
);