Hallo alle,
ich versuche mich gerade an der Migration von V14 auf V15 und habe hier ein sehr seltsames Problem. Ich habe die Prerequisites installiert:
Node 18.19.0
Bench 5.19.0
Python 3.11.7
Pip 23.3.1
MariaDB 10.6.16
Und die bench auf Python3.11 migriert:
bench pip install --upgrade pip
bench migrate-env python3.11
Beim Schwenk auf V15 treten dann die ersten Probleme auf:
bench switch-to-branch version-15 --upgrade frappe erpnext hrms
…
Die laufende bench wird dabei gestoppt, im Log tauchen Fehler auf:
14:46:50 watch.1 | ✘ [ERROR] Could not resolve "/home/frappe/frappe-bench/apps/frappe/frappe/public/js/recorder.bundle.js"
14:46:50 watch.1 |
14:46:50 watch.1 | ✘ [ERROR] Could not resolve "./file_uploader"
14:46:50 watch.1 |
14:46:50 watch.1 | frappe/public/js/frappe/upload.js:4:25:
14:46:50 watch.1 | 4 │ import FileUploader from "./file_uploader";
14:46:50 watch.1 | ╵ ~~~~~~~~~~~~~~~~~
14:46:50 watch.1 |
14:46:50 watch.1 | ✘ [ERROR] Could not resolve "./reminders"
14:46:50 watch.1 |
14:46:50 watch.1 | frappe/public/js/frappe/form/toolbar.js:5:32:
14:46:50 watch.1 | 5 │ import { ReminderManager } from "./reminders";
14:46:50 watch.1 | ╵ ~~~~~~~~~~~~~
14:46:50 watch.1 |
14:46:50 web.1 | * Detected change in '/home/frappe/frappe-bench/apps/frappe/frappe/desk/doctype/notification_settings/notification_settings.py', reloading
14:46:51 web.1 | * Restarting with stat
14:46:51 web.1 | Traceback (most recent call last):
14:46:51 web.1 | File "<frozen runpy>", line 189, in _run_module_as_main
14:46:51 web.1 | File "<frozen runpy>", line 112, in _get_module_details
14:46:51 web.1 | File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1407, in <module>
14:46:51 web.1 | @whitelist(methods=["POST", "PUT"])
14:46:51 web.1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14:46:51 web.1 | File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 819, in innerfn
14:46:51 web.1 | from frappe.utils.typing_validations import validate_argument_types
14:46:51 web.1 | File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/typing_validations.py", line 7, in <module>
14:46:51 web.1 | from pydantic import ConfigDict
14:46:51 web.1 | ModuleNotFoundError: No module named 'pydantic'
14:46:51 system | web.1 stopped (rc=1)
Dann wird es seltsam. Beim erneuten bench start
tritt dieser Fehler auf:
15:40:30 system | socketio.1 started (pid=28325)
15:40:30 socketio.1 | /home/frappe/frappe-bench/apps/frappe/node_modules/@redis/client/dist/lib/client/index.js:35
15:40:30 socketio.1 | modules: extensions?.modules,
15:40:30 socketio.1 | ^
15:40:30 socketio.1 |
15:40:30 socketio.1 | SyntaxError: Unexpected token '.'
15:40:30 socketio.1 | at wrapSafe (internal/modules/cjs/loader.js:915:16)
15:40:30 socketio.1 | at Module._compile (internal/modules/cjs/loader.js:963:27)
15:40:30 socketio.1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
15:40:30 socketio.1 | at Module.load (internal/modules/cjs/loader.js:863:32)
15:40:30 socketio.1 | at Function.Module._load (internal/modules/cjs/loader.js:708:14)
15:40:30 socketio.1 | at Module.require (internal/modules/cjs/loader.js:887:19)
15:40:30 socketio.1 | at require (internal/modules/cjs/helpers.js:74:18)
15:40:30 socketio.1 | at Object.<anonymous> (/home/frappe/frappe-bench/apps/frappe/node_modules/@redis/client/dist/index.js:18:18)
15:40:30 socketio.1 | at Module._compile (internal/modules/cjs/loader.js:999:30)
15:40:30 socketio.1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
15:40:30 system | socketio.1 stopped (rc=1)
Offensichtlich versteht die node-Version, die von bench start
verwendet wird, noch kein optional chaining. Dies wäre bei node <= V12 der Fall. Ich habe aber kein node <= V12 mehr auf meinem Rechner, siehe nvm list
:
frappe@my_erpnext:~/frappe-bench$ nvm list
-> v18.19.0
system
default -> 18 (-> v18.19.0)
node -> stable (-> v18.19.0) (default)
stable -> 18.19 (-> v18.19.0) (default)
iojs -> N/A (default)
lts/* -> lts/iron (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.19.0
lts/iron -> v20.10.0 (-> N/A)
Ich verstehe nicht, was hier passiert. Den Source Code von bench verstehe ich leider auch nicht.
Habt Ihr eine Idee, was die Ursache sein könnte?
Vielleicht Empfehlungen für strategisch geschickte print()-Statements, mit denen man den Ablauf von bench start
überprüfen kann?