diff --git a/lib/util/settings.ts b/lib/util/settings.ts index 751b0e75..841d521e 100644 --- a/lib/util/settings.ts +++ b/lib/util/settings.ts @@ -381,7 +381,11 @@ function applyEnvironmentVariables(settings: Partial): void { }, settings); if (type.indexOf('object') >= 0 || type.indexOf('array') >= 0) { - setting[key] = JSON.parse(process.env[envVariableName]); + try { + setting[key] = JSON.parse(process.env[envVariableName]); + } catch (error) { + setting[key] = process.env[envVariableName]; + } } else if (type.indexOf('number') >= 0) { /* eslint-disable-line */ // @ts-ignore setting[key] = process.env[envVariableName] * 1; diff --git a/test/settings.test.js b/test/settings.test.js index 3c955d75..9ce1d4c2 100644 --- a/test/settings.test.js +++ b/test/settings.test.js @@ -70,6 +70,7 @@ describe('Settings', () => { process.env['ZIGBEE2MQTT_CONFIG_ADVANCED_OUTPUT'] = 'csvtest'; process.env['ZIGBEE2MQTT_CONFIG_MAP_OPTIONS_GRAPHVIZ_COLORS_FILL'] = '{"enddevice": "#ff0000", "coordinator": "#00ff00", "router": "#0000ff"}'; process.env['ZIGBEE2MQTT_CONFIG_MQTT_BASE_TOPIC'] = 'testtopic'; + process.env['ZIGBEE2MQTT_CONFIG_ADVANCED_NETWORK_KEY'] = 'GENERATE'; write(configurationFile, {}); const s = settings.get(); @@ -81,6 +82,7 @@ describe('Settings', () => { expected.advanced.output = 'csvtest'; expected.map_options.graphviz.colors.fill = {enddevice: '#ff0000', coordinator: '#00ff00', router: '#0000ff'}; expected.mqtt.base_topic = 'testtopic'; + expected.advanced.network_key = 'GENERATE'; expect(s).toStrictEqual(expected); });