lua 코드 디버깅에 부딪힌 구덩이
1713 단어 lua
openresty 시작 시 initworker_by_lua_file D:\init.루아 방식으로 파일을 불러옵니다. 루아 코드에 오류가 있으면 error 로그에서 오류 정보를 출력하지 않습니다.
예를 들어 다음 코드:
1. 값이 nil인 변수를 연결합니다
local a
ngx.log(ngx.WARN, "value:" .. a)
ngx.log(ngx.WARN, "Successfully print the value of a")
2. 파일을 읽을 때 파일test.lua가 없습니다.
local f = assert(io.open("test.lua", "r"))
local data = f:read("*all")
f:close()
3. 파일을 쓸 때 경로 D:\\lua\\\\\\\\존재하지 않는 경우
local f = assert(io.open("D:\\lua\\file\\test.lua", "w"))
f:write(data)
f:close()
위와 같은 이상입니다. Openresty가 시작될 때 로그에 출력되지 않았지만, 프로그램이 실행을 중지했습니다. 디버깅을 할 때 주의해야 합니다.
현재 좋은 방법은 없습니다. 다만 필요한 곳에 추가 출력 로그를 추가해서 실행 여부를 판단할 뿐입니다.
2. attempt to index 글로벌'ngx'(a nil value)
module(...)
function test()
ngx.log(ngx.WARN, "이것은 테스트입니다")
end
테스트lua 파일에는 위 코드와 같이 이test 함수를 실행할 때 오류 메시지가 표시됩니다.:attempt to index 글로벌'ngx'(a nil value).이제 파일에 다음 코드만 추가하면 됩니다.
local ngx = ngx
또는
module(...)module(...,package.seeall)로 변경
문법
1. 하위 요청
local res1, res2 = ngx.location.capture_multi { {"/test1/index.html"}, {"/test2/index.html".. ngx.var.request_uri}, }
참고: capturemulti 뒤에는 "("이 아님; capture multi의 마지막 요청 뒤에는 쉼표 ","있어도 되고 없어도 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Neovim을 위한 자동 완성NeoVim으로 생산성을 높일 수 있는 가장 멋진 기능 중 하나는 자동 완성이므로 성능에 따라 플러그인을 선택할 수 있습니다. YouCompleteMe Coc.nvim 이 플러그인은 사용하기 좋지만 Javascrip...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.