2015-04-18 29 views
5

Tôi có lỗi sau khi tôi cố gắng đăng ký một nhân viên phục vụ trong một ứng dụng cơ bản phục vụ bởi một nút Server Express V4/trên Chrome 42:nhân viên dịch vụ Đăng ký thất bại với localhost

DOMException: Không thể đăng ký một ServiceWorker: Đã nhận được phản hồi HTTP lỗi mã (404) khi tìm nạp tập lệnh. {message: "Không thể đăng ký ServiceWorker: Đã nhận được mã HTTP res ... (404) khi tìm nạp tập lệnh", tên: "NetworkError", mã: 19, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2…} mã số: 19 thông điệp: "không thể

đây là mã đăng ký:

if ('serviceWorker' in navigator){ 
    console.log("SW present !!! "); 

    navigator.serviceWorker.register('worker.js', { 
     //scope: '/toto/' 
    }).then(function(registration){ 
     console.log('Service worker registered : ', registration.scope); 
    }) 
    .catch(function(err){ 
     console.log("Service worker registration failed : ", err); 
    }); 

    } 
+0

Xem http://www.serviceworker.org/ – benek

Trả lời

9

tôi nghĩ bạn đang cố gắng đăng ký không tồn tại kịch bản Trong trường hợp này vấn đề này do thỏa thuận Vui lòng kiểm tra kịch bản của bạn.. đường dẫn và đường dẫn phạm vi Có thể bạn không có bất kỳ 'worker.js' nào trong thư mục chứa tập lệnh này. Nếu đây là trường hợp, vui lòng cung cấp đường dẫn đầy đủ hoặc e worker.js trong cùng một thư mục.

+0

Cảm ơn bạn đã trả lời. Tôi không thấy trong các tài liệu mô tả của bất kỳ tập tin js conf. Bạn đã có một tài liệu tham khảo ? – benek

+1

Tôi không nhận được tệp conf js. Bạn nên sử dụng đúng scriptURL trong hàm đăng ký, như được giải thích trong https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register – Paritosh

0

Tôi cũng gặp lỗi này khi sử dụng máy chủ tốc hành. Nó chỉ ra vấn đề là với bản thân thiết lập máy chủ, không phải là mã đăng ký nhân viên dịch vụ. Tôi đã nói với ứng dụng tốc hành của mình để lấy index.html làm thư mục gốc mặc định bằng cách sử dụng:

app.get('/', function(req, res) { 
    res.sendFile(path.join(__dirname + '/index.html')); 
}); 

Tuy nhiên tôi chưa nói rõ vị trí của bất kỳ tệp nào khác mà tôi muốn nó có thể sử dụng. Ở giai đoạn này chỉ tập tin khác của tôi là tập công nhân dịch vụ mà đang ngồi ở thư mục gốc của thư mục vì vậy tôi cố định vấn đề bằng cách thêm dòng này vào file server:

app.use(express.static(__dirname + '/')); 

Để gỡ rối cho dù vấn đề của bạn là với bản thân máy chủ, bạn có thể tải xuống Web Server for Chrome và trỏ nó vào thư mục gốc của ứng dụng của bạn. Kiểm tra máy chủ được bắt đầu và nhấp vào URL máy chủ web. Nếu đăng ký nhân viên dịch vụ của bạn hiện thành công, bạn sẽ biết đó là vấn đề với việc thiết lập máy chủ tốc hành của bạn không phải mã đăng ký nhân viên dịch vụ của bạn.

Các vấn đề liên quan