7

Từ VS Code thiết bị đầu cuối tích hợp tôi chạy firebase serve --only functions,hosting sau đó trong tab debug tôi tạo ra các launch.json mặc định:Chức năng gỡ lỗi trong VS Mã

{ 
    "version": "0.2.0", 
    "configurations": [ 
    { 
     "type": "node", 
     "request": "launch", 
     "name": "Launch Program", 
     "program": "${file}" 
    } 
    ] 
} 

Tôi muốn gỡ lỗi phía máy chủ (chức năng/index.js) không phải phía khách hàng.

Tôi đã thử một số cấu hình từ https://code.visualstudio.com/docs/nodejs/nodejs-debugging không có may mắn.

Cách gỡ lỗi chức năng Firebase trong mã VS?

+0

Gỡ lỗi qua các bài kiểm tra đơn vị có lẽ là lựa chọn tốt nhất của bạn ngay bây giờ: https://firebase.google.com/docs/functions/unit-testing –

+0

Không phải tùy chọn ưa thích nhưng Nếu là người duy nhất làm việc tôi sẽ làm việc đó . –

Trả lời

3

Bạn không thể gỡ lỗi chức năng Firebase mà không cần xác định biến cấu hình Firebase trước. CLI Firebase thực hiện điều đó cho bạn.

Để gỡ lỗi, bạn có thể thử cùng một mẹo như bạn làm cho thử nghiệm đơn vị chức năng Firebase.

Thêm dòng vào file index.js trước khi bạn gọi admin.initializeApp(functions.config().firebase) sau:

admin.initializeApp = function() {} 
functions.config = function() { 
    return { 
     firebase: { 
      databaseURL: 'https://not-a-project.firebaseio.com', 
      storageBucket: 'not-a-project.appspot.com', 
     } 
    }; 
} 

Bạn có thể gỡ lỗi chức năng căn cứ hỏa lực bây giờ trong một cách tương tự như bất kỳ chức năng google đám mây khác:

  1. Cài đặt Trình mô phỏng chức năng đám mây:

    npm install -g @google-cloud/functions-emulator 
    
  2. St nghệ thuật các Emulator:

    functions start 
    
  3. Triển khai chức năng của bạn:

    functions deploy helloWorldFunction --trigger-http 
    

    Bạn sẽ nhận được kết quả như thế này:

    Waiting for operation to finish...done. 
    Deploying function........done. 
    Function helloWorldFunction deployed. 
    
    Property | Value 
    ---------|------------------------------------------------------------------------ 
    Name  | helloWorldFunction 
    Trigger | HTTP 
    Resource | http://localhost:8010/helloWorldProject/us-central1/helloWorldFunction 
    
  4. Để gỡ lỗi bằng cách sử dụng tiêu chuẩn loại Node.js Debugger:

    functions debug helloWorldFunction 
    

    Bạn sẽ nhận được:

    Debugger for helloWorldFunction listening on port 5858. 
    
  5. Bây giờ thêm dòng sau vào launch.json bạn VS Mã

    { 
        "version": "0.2.0", 
        "configurations": [ 
         { 
          "name": "Node.JS (local)", 
          "type": "node", 
          "request": "attach", 
          "port": 5858 
         } 
        ] 
    } 
    
  6. Bắt đầu gỡ lỗi trong mã VS của bạn và kích hoạt chức năng của bạn bằng cách gọi URL bạn đã bị ở bướC# 3.

    Bạn cũng có thể kích hoạt chức năng bằng cách nhập functions call helloWorldFunction trong thiết bị đầu cuối.

Để biết thêm chi tiết, tham khảo hướng dẫn tại đây Cloud Functions Local Emulator.

+0

Tôi gặp lỗi khi cố triển khai.Tôi tìm kiếm trên google, không có gì giúp đỡ, tôi bỏ cuộc. –

+0

Xin chào Andrew! Câu trả lời của bạn thật tuyệt vời, nhưng tôi phải thực hiện một số chỉnh sửa để làm cho nó hoạt động. Đầu tiên, dòng "admin.initializeApp = function() {}" cần được loại bỏ; nó thực sự làm cho các cuộc gọi tiếp theo để admin.initializeApp vô ích. Thứ hai, vui lòng làm rõ rằng not-a-project.firebaseio.com phải chứa địa chỉ chính xác cho ứng dụng firebase của bạn; nó không rõ ràng với tên không phải là một dự án. Cuối cùng, bên trong đối tượng firebase trong functions.config tôi đã phải thiết lập 'credential: admin.credential.applicationDefault()'. Với những sửa đổi này, tôi đã có thể chạy trình mô phỏng và gỡ lỗi trên VSCode –

+0

Tôi hơi ngạc nhiên khi bạn đề xuất cài đặt và sử dụng trình giả lập hàm GCP khi trình giả lập hàm firebase đã được cài đặt. Tôi giả định rằng họ là khá nhiều điều tương tự nhưng nó có ý nghĩa hơn để sử dụng các công cụ chức năng FB/giả lập khi sử dụng chức năng FB. – Tom