发现问题
我在 Frappe Framework -> Build -> Views
添加新的展示项目时,出现了这个问题:

保存后,API 报错信息如下:

关键堆栈信息:
Traceback (most recent call last):
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/app.py", line 121, in application
response = frappe.api.handle(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/api/__init__.py", line 60, in handle
data = endpoint(**arguments)
^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
return frappe.handler.handle()
^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/handler.py", line 51, in handle
data = execute_cmd(cmd)
^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/handler.py", line 84, in execute_cmd
return frappe.call(method, **frappe.form_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/__init__.py", line 1127, in call
return fn(*args, **newargs)
^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/utils/typing_validations.py", line 36, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/desk/doctype/workspace/workspace.py", line 307, in save_page
save_new_widget(doc, name, blocks, new_widgets)
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/desk/desktop.py", line 598, in save_new_widget
doc.save(ignore_permissions=True)
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 485, in save
return self._save(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 538, in _save
self.run_post_save_methods()
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 1323, in run_post_save_methods
self.run_method("on_update")
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 1129, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 1526, in composer
return composed(self, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 1504, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/model/document.py", line 1126, in fn
return method_object(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/desk/doctype/workspace/workspace.py", line 114, in on_update
export_to_files(record_list=[["Workspace", self.name]], record_module=self.module)
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/modules/export_file.py", line 27, in export_to_files
write_document_file(
File "/var/www/erpnext/erp-bench/apps/frappe/frappe/modules/export_file.py", line 58, in write_document_file
print(f"Wrote document file for {doc.doctype} {doc.name} at {path}")
BrokenPipeError: [Errno 32] Broken pipe
问题原因
frappe/modules/export_file.py
中使用了 print()
方法
解决方法
将 print()
方法更改为 frappe.logger().info()
。
再次保存时,不再出错。
