═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
START
═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
2026-08-18 11:03:44.351 | INFO | <<< LAUNCHER CONFIG >>>
2026-08-18 11:03:44.355 | INFO | [Host] 0.0.0.0
2026-08-18 11:03:44.357 | INFO | [Port] 22267
2026-08-18 11:03:44.359 | INFO | [SSL] False
2026-08-18 11:03:44.361 | INFO | [Electron] False
2026-08-18 11:03:44.363 | INFO | [Reload] True
2026-08-18 11:03:44.982 | INFO | Patched ThreadPoolExecutor created
2026-08-18 11:03:44.989 | INFO | <<< WEBUI CONFIGS >>>
2026-08-18 11:03:44.992 | INFO | [Theme] dark
2026-08-18 11:03:44.994 | INFO | [Language] zh-CN
2026-08-18 11:03:44.996 | INFO | [Password] False
2026-08-18 11:03:44.998 | INFO | [CDN] False
2026-08-18 11:03:45.000 | INFO | [IS_ON_PHONE_CLOUD] False
2026-08-18 11:03:45.037 | INFO | Add task <check_update (delay=300)>
2026-08-18 11:03:45.041 | INFO | Add task <schedule_update (delay=86400)>
2026-08-18 11:03:45.044 | INFO | Start task handler
2026-08-18 11:03:45.046 | INFO | <<< RESTART ALAS >>>
2026-08-18 11:03:45.048 | ERROR | Failed to get local commit: [Errno 2] No such file or directory:
'/app/AzurLaneAutoScript/.git/refs/remotes/origin/master'
2026-08-18 11:03:45.052 | ERROR | Failed to get local commit: [Errno 2] No such file or directory:
'/app/AzurLaneAutoScript/.git/refs/heads/master'
2026-08-18 11:03:45.055 | INFO | Start alas complete
2026-08-18 11:03:45.059 | INFO | [CurrentCommit] 3029ca4295629f4384afacedf30429ee22bc81b8
2026-08-18 11:03:45.062 | INFO | Fetch url:
https://1818706573.cdn.123clouddisk.com/1818706573/pack/LmeSzinc_AzurLaneAutoScript_master/latest.json
2026-08-18 11:03:45.435 | INFO | [LatestCommit] d816310324bf686dff3252b37efbb997d9a328a4
2026-08-18 11:03:45.446 | INFO | Current repo is behind remote
2026-08-18 11:03:45.453 | INFO | New update available
2026-08-18 11:04:25.678 | INFO | [Server] cn
2026-08-18 11:04:25.683 | INFO | Using template config, which is read only
2026-08-18 11:04:26.157 | INFO | Init config watcher done.
2026-08-18 11:04:26.798 | INFO | Init config watcher done.
2026-08-18 11:04:26.801 | INFO | Add task <Switch_state_refresh (delay=2)>
2026-08-18 11:04:26.803 | INFO | Add task <set_aside_status (delay=2)>
2026-08-18 11:04:26.805 | INFO | Add task <Switch_visibility_state_refresh (delay=15)>
2026-08-18 11:04:26.807 | INFO | Add task <Switch_update_state_refresh (delay=1)>
2026-08-18 11:04:26.810 | INFO | Start task handler
2026-08-18 11:04:29.344 | ERROR | An internal error occurred in the application
╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
│ │
│ /usr/local/lib/python3.7/site-packages/pywebio/session/threadbased.py:254 in run │
│ │
│ 251 │ │ │ @wraps(callback) │
│ 252 │ │ │ def run(callback): │
│ 253 │ │ │ │ try: │
│ ❱ 254 │ │ │ │ │ callback(event['data']) │
│ 255 │ │ │ │ except Exception as e: │
│ 256 │ │ │ │ │ # 子类可能会重写 get_current_session ,所以不要用 │
│ ThreadBasedSession.get_current_session 来调用 │
│ 257 │ │ │ │ │ if not isinstance(e, SessionException): │
│ │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮ │
│ │ callback = <function toast.<locals>.<lambda> at 0x7469c84e5440> │ │
│ │ e = TypeError("'NoneType' object is not iterable") │ │
│ │ event = {'event': 'callback', 'task_id': 'CB-<lambda>-tRddlfcTQP', 'data': None} │ │
│ │ self = <pywebio.session.threadbased.ThreadBasedSession object at 0x7469c964c790> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯ │
│ /usr/local/lib/python3.7/site-packages/pywebio/output.py:1719 in <lambda> │
│ │
│ 1716 │ │ 'success': '#2e7d32' │
│ 1717 │ } │
│ 1718 │ color = colors.get(color, color) │
│ ❱ 1719 │ callback_id = output_register_callback(lambda _: onclick()) if onclick is not None │
│ else None │
│ 1720 │ │
│ 1721 │ send_msg(cmd='toast', spec=dict(content=content, duration=int(duration * 1000), │
│ position=position, │
│ 1722 │ │ │ │ │ │ │ │ │ color=color, callback_id=callback_id)) │
│ │
│ ╭──────────────────────────────── locals ─────────────────────────────────╮ │
│ │ _ = None │ │
│ │ onclick = <function AlasGUI.run.<locals>.goto_update at 0x7469c84e5560> │ │
│ ╰─────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /app/AzurLaneAutoScript/module/webui/app.py:1255 in goto_update │
│ │
│ 1252 │ │ │
│ 1253 │ │ def goto_update(): │
│ 1254 │ │ │ self.ui_develop() │
│ ❱ 1255 │ │ │ self.dev_update() │
│ 1256 │ │ │
│ 1257 │ │ update_switch = Switch( │
│ 1258 │ │ │ status={ │
│ │
│ ╭────────────────────────── locals ──────────────────────────╮ │
│ │ self = <module.webui.app.AlasGUI object at 0x7469c9646250> │ │
│ ╰────────────────────────────────────────────────────────────╯ │
│ │
│ /usr/local/lib/python3.7/site-packages/pywebio/output.py:1796 in wrapper │
│ │
│ 1793 │ │ def wrapper(*args, **kwargs): │
│ 1794 │ │ │ self.__enter__() │
│ 1795 │ │ │ try: │
│ ❱ 1796 │ │ │ │ return func(*args, **kwargs) │
│ 1797 │ │ │ finally: │
│ 1798 │ │ │ │ self.__exit__(None, None, None) │
│ 1799 │
│ │
│ ╭──────────────────────────── locals ─────────────────────────────╮ │
│ │ args = (<module.webui.app.AlasGUI object at 0x7469c9646250>,) │ │
│ │ func = <function AlasGUI.dev_update at 0x7469c9774b00> │ │
│ │ kwargs = {} │ │
│ │ self = <pywebio.output.use_scope_ object at 0x7469c9775c10> │ │
│ ╰─────────────────────────────────────────────────────────────────╯ │
│ │
│ /app/AzurLaneAutoScript/module/webui/app.py:949 in dev_update │
│ │
│ 946 │ │ │ status=u, get_state=lambda: updater.state, name="updater" │
│ 947 │ │ ) │
│ 948 │ │ │
│ ❱ 949 │ │ update_table() │
│ 950 │ │ self.task_handler.add(updater_switch.g(), delay=0.5, pending_delete=True) │
│ 951 │ │ │
│ 952 │ │ updater.check_update() │
│ │
│ ╭──────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ self = <module.webui.app.AlasGUI object at 0x7469c9646250> │ │
│ │ u = <function AlasGUI.dev_update.<locals>.u at 0x7469c82904d0> │ │
│ │ update_table = <function AlasGUI.dev_update.<locals>.update_table at 0x7469c82909e0> │ │
│ │ updater_switch = <module.webui.utils.Switch object at 0x7469c830a050> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /app/AzurLaneAutoScript/module/webui/app.py:830 in update_table │
│ │
│ 827 │ │ │ │ │ │ "SHA1", │
│ 828 │ │ │ │ │ │ t("Gui.Update.Author"), │
│ 829 │ │ │ │ │ │ t("Gui.Update.Time"), │
│ ❱ 830 │ │ │ │ │ │ t("Gui.Update.Message"), │
│ 831 │ │ │ │ │ ], │
│ 832 │ │ │ │ ) │
│ 833 │
│ │
│ ╭────────────────── locals ──────────────────╮ │
│ │ history = (None, None, None, None) │ │
│ │ local_commit = (None, None, None, None) │ │
│ │ upstream_commit = (None, None, None, None) │ │
│ ╰────────────────────────────────────────────╯ │
│ │
│ /usr/local/lib/python3.7/site-packages/pywebio/io_ctrl.py:199 in inner │
│ │
│ 196 │ │ @wraps(func) │
│ 197 │ │ def inner(*args, **kwargs): │
│ 198 │ │ │ try: │
│ ❱ 199 │ │ │ │ return func(*args, **kwargs) │
│ 200 │ │ │ except Exception: │
│ 201 │ │ │ │ # 发生异常,安全地释放 Output 对象 │
│ 202 │ │ │ │ params = [content_param] if isinstance(content_param, str) else │
│ content_param │
│ │
│ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
│ │ args = ([None, None, None, None],) │ │
│ │ bound = OrderedDict([('tdata', [None, None, None, None]), ('header', ['SHA1', '作者', '提交时间', │ │
│ │ '提交信息'])]) │ │
│ │ content_param = 'tdata' │ │
│ │ func = <function put_table at 0x7469c9ec00e0> │ │
│ │ kwargs = {'header': ['SHA1', '作者', '提交时间', '提交信息']} │ │
│ │ param = 'tdata' │ │
│ │ params = ['tdata'] │ │
│ │ sig = <Signature (tdata, header=None, scope=None, position=-1) -> pywebio.io_ctrl.Output> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /usr/local/lib/python3.7/site-packages/pywebio/output.py:657 in put_table │
│ │
│ 654 │ │ ] │
│ 655 │ │ header = header_ │
│ 656 │ else: │
│ ❱ 657 │ │ tdata = [list(i) for i in tdata] # copy data │
│ 658 │ │
│ 659 │ if header: │
│ 660 │ │ tdata = [header, *tdata] │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ header = ['SHA1', '作者', '提交时间', '提交信息'] │ │
│ │ position = -1 │ │
│ │ scope = None │ │
│ │ tdata = [None, None, None, None] │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /usr/local/lib/python3.7/site-packages/pywebio/output.py:657 in <listcomp> │
│ │
│ 654 │ │ ] │
│ 655 │ │ header = header_ │
│ 656 │ else: │
│ ❱ 657 │ │ tdata = [list(i) for i in tdata] # copy data │
│ 658 │ │
│ 659 │ if header: │
│ 660 │ │ tdata = [header, *tdata] │
│ │
│ ╭─────────────────── locals ────────────────────╮ │
│ │ .0 = <list_iterator object at 0x7469c830a350> │ │
│ │ i = None │ │
│ ╰───────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'NoneType' object is not iterable
在提问之前...
描述你的问题
Docker中无法更新,之前版本是正常的,就是最近的一次更新后就无法使用了
如何复现
预期行为
No response
相关 Logs
截图
No response
还有别的吗?
No response