Die V8-Skriptengine wird über zwei Konfigurationsdateien, die im Serververzeichnis liegen, parametrisiert:
oxv8.cfg
oxv8.v8-options.cfg
Diese Dateien werden mit einer von OPTIMAL SYSTEMS vorgesehenen Standard-Parametrisierung ausgeliefert. Von diesem Standard darf nur nach Rücksprache mit dem Support von OPTIMAL SYSTEMS abgewichen werden. Werden diese Dateien aus Versehen gelöscht, werden beim nächsten Serverstart neue Standard-Dateien erzeugt. Diese Dateien werden bei jedem Serverstart ausgelesen und steuern die Funktionsweise der JavaScript Engine in enaio® server. |
oxv8.cfg
Diese Datei steuert die wichtigsten Parameter für die ordnungsgemäße Funktion der Skriptengine in enaio® server. Zahlreiche weitere Parameter, mit denen die V8-Skriptengine parametrisiert werden kann, unserer Ansicht nach aber nicht relevant sind, können in der oxv8.v8-options.cfg
gesteuert werden. Für diese Parameter gibt es enaio®-seitig keine spezielle Konfiguration. Die folgende Übersicht zeigt den Standard-Zustand der Datei oxv8.cfg
:
oxv8.cfg
[Params] AutoPrintTypeInfo = 0 PrintVariantOnInvokeException = 1 TypeEnumerable = 0 PropputrefUsage = 2 BindRawGet = 1 BindRawPut = 1 PrependUseStrict = 1 PrependUseStrictLineOffset = 1 Conversion_VT_I8_to_JS = 0 UseProxy = 1 ProxyAllowedNames = toJSON; ReadMetadataAlways = 1 [v8] LogPromiseHook = 0 LogPromiseReject = 0 LogUseCounterFeature = 0 LogMessage = 0 LogV8Log = 0 LogGC = 0 LogMicrotasksCompleted = 0 LogBeforeCallEntered = 0 LogCallCompleted = 0 ThreadPoolSize = 1 [inspector] // for future use |
LogXXX
– Der jeweilige Parameter bestimmt, ob spezifizierte v8-Ereignisse explizit im enaio-Log protokolliert werden
AutoPrintTypeInfo
– bestimmt, ob bei allen aufgetretenen COM-Klassen die ermittelte TypeInfo
im comtypes
-Verzeichnis ausgegeben wird
PrintVariantOnInvokeException
– bestimmt in welchen Format eine Fehlermeldung bei COM-Fehlern ausgegeben wird
TypeEnumerable
– bestimmt, ob die Property $type
bei COM-Objekten enumerable
ist (z. B. bei JSON.stringify
etc. erscheint)
PropputrefUsage
– bestimmt, wie und wann propputref
verwendet wird, siehe Artikel rc.com
BindRawGet
– bestimmt, ob die Methode get_X
bei Vorhandensein der Property X
auch vorhanden sein soll
BindRawPut
– bestimmt, ob die Methode put_X
bei Vorhandensein der Property X
auch vorhanden sein soll
PrependUseStrict
– bestimmt, ob bei jedem Skript vorne eine Zeile 'use strict'
automatisch hinzugefügt wird (sofern nicht bereits vorhanden)
PrependUseStrictLineOffset
– relevant nur bei PrependUseStrict
= 1 und wenn die Zeile 'use strict'
hinzugefügt wurde
Falls 1: die Nummerierung von Zeilen beginnt (intern) nicht bei 0, sondern -1. Damit werden die Zeilennummern in Exceptions korrekt. Allerdings wird dadurch die Zeilennummerierung für den Debugger ungünstig. CDT wird das Skript als "geändert" markieren.
Falls 0: die Nummerierung von Zeilen beginnt (intern) bei 0. Das passt für den Debugger zufrieden, aber die Zeilennummern in Exceptions sind um 1 verschoben.
Conversion_VT_I8_to_JS
– bestimmt, wie VARIANT
vom Typ VT_I8
nach JS-Variable konvertiert wird, siehe Artikel Behandlung spezieller COM-Typen in JavaScript
UseProxy
, ProxyAllowedNames
– siehe Artikel Schreibweise von COM-Objekten
ReadMetadataAlways
– bestimmt, ob oxv8.metadata.cfg
nur einmalig gelesen wird (0) oder bei jedem Skriptstart (1)
ThreadPoolSize
– bestimmt, wie viele Arbeitsthreads in der Skriptengine verwendet werden sollen (z. B. für GC)
Die Sektion [inspector]
ist eingehend im Kapitel Debuggen von JavaScript beschrieben.
oxv8.v8-options.cfg
Die v8-Skriptengine hat zahlreiche weitere Parameter zum Steuern der Skriptausführung. Die Defaultwerte sind in der Regel in Ordnung und es sollte nur im Einzelfall und nach Rücksprache mit dem Support von OPTIMAL SYSTEMS von diesen abgewichen werden. Wenn nötig, kann man diese Optionen in oxv8.v8-options.cfg
konfigurieren (die exakte Schreibweise ist der v8-Doku zu entnehmen, beginnend mit zweifachem Minus, z. B. --use_strict
). Die Optionen werden beim Start der Anwendung an v8 übergeben.
Die folgende Übersicht zeigt den Standard-Zustand der Datei:
oxv8.v8-options.cfg
--stack-size=500 -- Text after "--" line will be ignored. Create needed options before "--" line, one option per line. For possible options s. https://chromium.googlesource.com/v8/v8/+/refs/heads/main/src/flags/flag-definitions.h or use "node --v8-options" stack-size set to 500 due to problems with stack overflow and stringify/recursive calls |