Closed netgitdom closed 3 years ago
Ich glaube ich konnte das Problem etwas weiter eingrenzen. Ich habe aus historischen Gründen (aus YNAB übernommen) meine Kategorieren besonders markiert:
"Kategorie1 +" = Ansparen "Kategorie2 ~" = Level halten "Kategorie3 #" = Immer wieder bis Minimum auffüllen
Wenn ich nun Kategorien mit "~" habe, scheinen diese beim Laden von BudgetBudget Probleme zu verursachen, wenn ich die Kategorien umbenenne in "Kategorie2" funktioniert es, "Kategorie2 ~" macht hingegen Probleme.
edit: Leider war es das doch nicht, nach wie vor gibt es Probleme mit dem Laden und ich finde keinen Fehler :(
edit2: Es tritt auch bei einem neu angelegten, ansonsten leeren Offlinekonto auf, es machen scheinbar die Offlinekonten ( egal ob mit 3000 Einträgen oder auch nur 3 ) Probleme bei mir. Kann ich irgendwo mehr Infos sehen was genau fehlschlägt ?
Ich habe mir mal den "development mode" installiert um mehr Infos zu bekommen:
Error: Error invoking remote method 'MM_EXPORT_TRANSACTIONS': Error: Command failed: osascript /Users/xxx/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/xxx/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712) ▼ 2 stack frames were expanded. (anonymous function) unknown EventEmitter.o.invoke electron/js2c/renderer_init.js:71:535 ▲ 2 stack frames were expanded. async getTransactions src/moneymoney/getTransactions.ts:23 20 | } 21 | 22 | const startDate = format(new Date(startDateTimestamp), 'yyyy-MM-dd');
23 | const transactionsByAccount = validateTransactionByAccount( | ^ 24 | await ipcRenderer.invoke( 25 | 'MM_EXPORT_TRANSACTIONS', 26 | accountNumbers, View compiled This screen is visible only in development. It will not appear if the app crashes in production. Open your browser’s developer console to further inspect this error. Click the 'X' or hit ESC to dismiss this message
Wenn ich das AppleScript direkt ausführe, läuft es fehlerlos:
tell application "MoneyMoney" to export transactions from account "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" from date "2020-22-12" as "plist"
Ich bin leider kein Entwickler und finde es nicht. Ich bin aber gerne bereit Infos und Dinge zuzuarbeiten und Sachen zu testen. Noch mal meine bisherigen Erkenntnisse zusammengefasst:
Hey @netgitdom Sorry für's späte reagieren. Ich probier das gerade mal zu rekonstruieren. Passiert der Fehler bei dir auch, wenn das Datum in der Vergangenheit liegt?
Hi,
kein Problem :-) Ich hätte die Erstmeldung mal anpassen sollen, das Problem war scheinbar nicht das Datum, sondern es muss irgendwas mit (meinen) Offlinekonten zu tun haben. Wenn ich die Offlinekonten rausnehme funktioniert alles wie gewünscht. Im vorherigen Eintrag habe ich mal zusammengefasst wie mein aktueller Stand ist. Hätte ich vllt besser den Ursprungsissue belassen und einen neuen für die Offlinekonten gemacht :/
Alles klar!
Ich kann das Problem bei mir bisher nicht reproduzieren leider :(
Kannst du mal diese debug.js
datei bei dir lokal erstellen (z.b. im Projekt-folder), dann oben ACCOUNT
und ggf. START_DATE
anpassen und das ganze im terminal mit node debug.js
ausführen?
(Das ist quasi das gleiche was auf in der app läuft main/moneymoney/osascript.ts
nur ohne die Electron App drum rum)
Ich habe die Datei bei mir erzeugt, habe den Account angepasst, bekomme folgenden Output:
node debug.js
Error: Command failed: osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)
at ChildProcess.exithandler (node:child_process:333:12) at ChildProcess.emit (node:events:376:20) at maybeClose (node:internal/child_process:1063:16) at Socket.<anonymous> (node:internal/child_process:449:11) at Socket.emit (node:events:376:20) at Pipe.<anonymous> (node:net:666:12) {
killed: false, code: 1, signal: null, cmd: 'osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"', stderr: '/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n' }
Ok! Also den gleichen Fehler wie auch in der app 👍
Was passiert wenn du
osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"
im terminal ausführst?
Ok, dort passiert der Fehler also nicht.... Kannst den Kommentar gerne löschen, da stehen ja private Details drin.
Steht nix super geheimes drin, sonst hätte ich das nicht gepostet, aber gibt ein gutes Gefühl, dass du auf sowas achtest :-)
Danke :) Da du das jetzt nur raus-editiert hast, kann man über den "edited" dialog immer noch auf die vorherige version zugreifen. Darum meinte ich löschen.
Zurück zum Thema:
Welche nodejs version läuft bei dir? node -v
im terminal
node -v
v15.5.0
und welche shell benutzt du? echo "$SHELL"
echo "$SHELL"
/bin/zsh
Kannst du in der debug.js
mal die shell explizit setzen?: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js#L20
und dann noch mal node debug.js
ausführen?
Leider unverändert:
`Error: Command failed: osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22" /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)
at ChildProcess.exithandler (node:child_process:333:12)
at ChildProcess.emit (node:events:376:20)
at maybeClose (node:internal/child_process:1063:16)
at Socket.<anonymous> (node:internal/child_process:449:11)
at Socket.emit (node:events:376:20)
at Pipe.<anonymous> (node:net:666:12) {
killed: false, code: 1, signal: null, cmd: 'osascript /Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript "b50f1f5e-b02d-4705-922e-b1cd28d8cf32" "2020-12-22"', stderr: '/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n' }`
debug.js hatte ich angepasst:
.map((arg) =>
"${arg.replace(/"/g, '\"')}") .join(' ')}
,
{ maxBuffer: MAX_BUFFER, shell: '/bin/zsh' },
(err, stdout, stderr) => {
if (err) {`
Hmpf... so ein mist!
Hast du zufällig noch ein Intel-Mac system auf dem du auch MoneyMoney hast? Und kannst das ganze da mal testen?
Kannst du bitte folgendes auch noch mal testen:
debug.js
: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js(ich hab den appleScript timeout mal auf 10min erhöht)
Bekommst du den Fehler dann auch erst nach 10 Minuten (vorher 2) oder schneller?
Ich habe mal das Terminal in Rosetta geöffnet und dann node debug.js ausgeführt, aber mit gleichem Ergebnis. Einen anderen Intel Mac hab ich nicht mit dem Setup, müsste ich erst alles noch einrichten.
Leeres Konto
node debug.js
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>creator</key>
<string>MoneyMoney 2.4.1</string>
<key>transactions</key>
<array/>
</dict>
</plist>
Mit 2 Transaktionen drin funktioniert es auch, aber der 3. Transaktion kommt der Fehler.
(ich hab den appleScript timeout mal auf 10min erhöht)
Bekommst du den Fehler dann auch erst nach 10 Minuten (vorher 2) oder schneller?
Das hab ich zu spät gesehen, habe jetzt mal das neue Offlinekonto mit 3 Transaktionen gestartet und schaue mal wie lange es bis zum Error dauert.
Ist es egal welche 2 Transaktionen? oder ist evtl. wirklich mit der einen etwas Kaputt?
Muss mich gerade mal um etas anderes kümmern. Werde später antworten. Sonst können wir vielleicht morgen ja mal nen call machen, dann gehts vielleicht schneller :)
Danke für deine Mithilfe!
/Users/dominicschmidt/Development/budgetbudget/main/scripts/exportTransactions.applescript:113:184: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)
Er bricht nach 2 Minuten wieder ab, 15:19:19 Ausführung Start, 15:21:21 Ausführung Ende mit Fehler
Es ist egal welche Transaktionen das sind, ab der 3. kommt das Problem.
Kein Grund sich zu bedanken, so ein Luxussupport bei nem kostenlosen Projekt ist nicht selbstverständlich :-)
Hier kommen noch die 2:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>creator</key>
<string>MoneyMoney 2.4.1</string>
<key>transactions</key>
<array>
<dict>
<key>accountUuid</key>
<string>07f3f565-bfd8-4c98-beb0-66bc0ac486a0</string>
<key>amount</key>
<real>-10</real>
<key>booked</key>
<true/>
<key>bookingDate</key>
<date>2021-01-04T12:00:00Z</date>
<key>category</key>
<string>Lebenshaltung\Essen Allgemein</string>
<key>categoryId</key>
<integer>77</integer>
<key>categoryUuid</key>
<string>d4c0a81d-2522-46e2-ab69-d6c3e7790279</string>
<key>checkmark</key>
<false/>
<key>currency</key>
<string>EUR</string>
<key>id</key>
<integer>17251</integer>
<key>name</key>
<string>NochJemand</string>
<key>valueDate</key>
<date>2021-01-04T12:00:00Z</date>
</dict>
<dict>
<key>accountUuid</key>
<string>07f3f565-bfd8-4c98-beb0-66bc0ac486a0</string>
<key>amount</key>
<real>-20</real>
<key>booked</key>
<true/>
<key>bookingDate</key>
<date>2021-01-04T12:00:00Z</date>
<key>category</key>
<string>Allgemeine Ausgaben\Dienstleistungen</string>
<key>categoryId</key>
<integer>66</integer>
<key>categoryUuid</key>
<string>830791eb-8643-4cf8-a842-4df2bc7810a1</string>
<key>checkmark</key>
<false/>
<key>currency</key>
<string>EUR</string>
<key>id</key>
<integer>17250</integer>
<key>name</key>
<string>Jemand</string>
<key>valueDate</key>
<date>2021-01-04T12:00:00Z</date>
</dict>
</array>
</dict>
</plist>
Ab dem 3. dann wieder das Problem. Hier die 3 als Screenshot
Ich habe jetzt mal auf nem Intel Mac versucht das ganze nachzustellen, ohne Gewähr wie vergleichbar das ist.
macOS 10.14.6 node: v12.16.3 Shell: /usr/local/bin/zsh ( mit brew nachinstalliert )
Aber ist halt das ältere OS, die ältere node Version und ne andere zsh. Also eigentlich alles anders und ich kann hier leider nicht einfach Dinge upgrade weil das meine Produktivmaschine ist) Hoffe es hat vllt trotzdem geholfen.
Er bricht nach 2 Minuten wieder ab, 15:19:19 Ausführung Start, 15:21:21 Ausführung Ende mit Fehler
Ok, mir war auch grad noch aufgefallen, dass der timeout bei dir nicht geändert ist, dafür müsstest du exportTransactions.applescript
anpassen – denke aber das ist egal. Wenn drei transaktionen nicht nach ein paar Millisekunden exportiert sind, werden sie es auch nicht nach 10 Minuten sein.
Es ist egal welche Transaktionen das sind, ab der 3. kommt das Problem.
Crazy...
...
Ich habs hier mit MacOs BigSur 11.0.1 auf Intel am laufen. Da geht alles. Gehe darum erst mal naiv davon aus, dass es ein M1 bug ist. (Hab mal um Hilfe beim validieren gebeten)
Kannst du noch ein weites mal die debug.js
aktualisieren: https://github.com/Xiphe/budgetbudget/blob/debug-67/debug.js
Meine Hoffnung ist gering, aber ich habs nochmal vereinfacht...
node läuft übrigens in Rosetta, also als Intel ist mir noch aufgefallen auf dem M1, also nicht nativ.
Habe das debug.js aktualisiert.
Error: Command failed: osascript -e "tell application \"MoneyMoney\" to export transactions from account \"07f3f565-bfd8-4c98-beb0-66bc0ac486a0\" from date \"2020-12-22\" as \"plist\""
33:138: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)
at ChildProcess.exithandler (node:child_process:333:12)
at ChildProcess.emit (node:events:376:20)
at maybeClose (node:internal/child_process:1063:16)
at Socket.<anonymous> (node:internal/child_process:449:11)
at Socket.emit (node:events:376:20)
at Pipe.<anonymous> (node:net:666:12) {
killed: false,
code: 1,
signal: null,
cmd: 'osascript -e "tell application \\"MoneyMoney\\" to export transactions from account \\"07f3f565-bfd8-4c98-beb0-66bc0ac486a0\\" from date \\"2020-12-22\\" as \\"plist\\""',
stderr: '33:138: execution error: „MoneyMoney“ hat einen Fehler erhalten: AppleEvent lieferte eine Zeitüberschreitung. (-1712)\n'
}
Wieder nach 2 Minuten, denke auch, macht vmtl. keinen Sinn den Timeout hochzustellen. Schade ist, dass man nicht sieht woran er hängt.
Ich kann noch was beisteuern, ich habe gerade mal MoneyMoney (läuft als native Apple Version) mit Rosetta gestartet ( also über Informationen und dann "Mit Rosetta öffnen" ausgewählt ) und siehe da, jetzt gehts.
Habe das jetzt ein paar mal hin und her getestet und ich kann es damit reproduzieren.
Am Budget selber habe ich dabei nix geändert.
Scheint also irgendeinen Zusammenhang zwischen der M1 Version von MoneyMoney zu geben. Ob das jetzt MM selber oder irgendeine API ist kann ich natürlich nicht sagen :)
Aber immerhin ist das mal ein Workaround für mich. Ich liefere aber gerne weiter Daten zu um dem beizukommen.
Hammer! Das ist ja schon mal sehr gut zu wissen und sehr interessant! Ich werde das mal so an MoneyMoney weitergeben.
Langfristig will ich natürlich auf BudgetBudget nativ für M1 kompilieren, hab mich aber noch nicht weiter drum gekümmert ob und wie der status da mit Electron aussieht.
Oder doch noch swift lernen und direkt als native app noch mal bauen 😬
Korrigiere: Scheinbar müsste ich die App schon jetzt auch für Apple Silicon bauen können.
Werde das als nächstes machen und dir dann bescheid sagen
@netgitdom kannst du diese Version mal testen? https://github.com/Xiphe/budgetbudget/releases/download/v1.0.0-beta.9/BudgetBudget-1.0.0-beta.9-arm64.dmg
Das sieht seht gut aus:
Und es läuft, habe sowohl das Testofflinekonto als auch mein "produktives" geladen, neue Einträge getätigt und funktioniert nach meinen ersten Versuchen erst mal, spitze 👍
Moving on to: https://github.com/Xiphe/budgetbudget/issues/68
Wenn ich ein neues Budget anlegen möchte, dafür mein Girokonto mit >5000 Buchungen auswähle und einen StartTermin == heute wähle, bekomme ich nach längerer Ladezeit folgenden Fehler:
Command failed: osascript /Applications/BudgetBudget.app/Contents/Resources/scripts/exportTransactions.applescript "c331caeb-e85d-49c9-9590-3ffdc4f3c32c" "2020-12-23"
Version 1.0.0-beta.9 (1.0.0-beta.9) mit MoneyMoneyApp 2.4.1 auf Big Sur 11.1
PS: Super cooles Projekt, vielen Dank dafür :-)