Chuyển tới nội dung chính

Tham khảo các lỗi thời gian chạy thường gặp

Đoạn thông báo lỗiNguyên nhânCách khắc phục
attempt to perform arithmetic on aĐã thực hiện phép toán (+, -, *, /) trên một giá trị không phải sốXác thực các toán hạng là số trước khi thực hiện phép toán
attempt to compareĐã thực hiện phép so sánh (>, <, >=, <=) trên các giá trị không hợp lệXác thực hai toán hạng có thể so sánh trước khi so sánh
attempt to concatenate aĐã nối một giá trị không phải chuỗi bằng ..Bảo đảm cả hai vế đều là chuỗi trước khi nối
attempt to call aĐã gọi một giá trị không phải là hàmBảo đảm giá trị là hàm trước khi gọi
attempt to index aĐã lập chỉ mục một giá trị không phải bảngBảo đảm biến là bảng trước khi lập chỉ mục
attempt to yield across a C-call boundaryĐã cố nhường quyền thực thi trong ngữ cảnh không cho phépKhi dùng require, hãy bảo đảm mô-đun được nạp trả về mà không gọi hàm nhường quyền thực thi (được đánh dấu bằng dấu chấm than trong sổ tay này). Đồng thời tránh dùng hàm nhường quyền thực thi trong callback có cầu nối C.
invalid order function for sortingHàm so sánh sắp xếp không hợp lệ; logic so sánh không nhất quánDùng hàm thứ tự nghiêm ngặt; với mọi cặp giá trị, không được đồng thời có a>b và a<b
bad argument #1 to 'xxx' (number expected, got nil)Đối số số 1 của hàm 'xxx' không hợp lệ; cần số nhưng nhận được nilTruyền đối số hợp lệ có kiểu mong đợi
bad argument #2 to 'xxx' (number has no integer representation)Không thể biểu diễn đối số số 2 dưới dạng số nguyênTruyền đối số hợp lệ
bad argument #3 to 'xxx'Đối số số 3 không hợp lệTruyền đối số hợp lệ
  • Cách khắc phục tạm thời lỗi "attempt to yield across a C-call boundary" khi dùng require:
      1. Thêm return function() vào dòng đầu tiên của mô-đun được nạp
      1. Thêm end vào dòng cuối cùng của mô-đun
      1. Thêm một cặp dấu ngoặc đơn khi nạp: đổi require('A') thành require('A')()