fix(core/cmd_controller): ensure webserver host and port aren't set to undefined

We've introduced a regression in 6d75a4c6c4 where running
`embark run` breaks due to webserver options not being defined.

The reason this happened is because in the mentioned commit, we're checking given
webserver options with an identity check against `null` and only set dedicated
options, if that condition is true.

E.g.:

```
if (options.runWebserver !== null) {
  webServerConfig.enabled = options.runWebserver;
}
```

Unfortunately, due to one of JavaScript design flaws, this condition behaves totally
different when no identity check is done, which causes Embark to break.

Meaning that in JavaScript:

```
undefined != null // false
undefined !== null // true
```

In other words, after the mentioned commit, the condition is true, resulting
in several webserver configurations to be set to `undefined`.

This conflicts at runtime when we compose webserver configurations out of user input
and Embark's defaults here: dc5de7c1b4/lib/core/config.js (L392)

In other words, since webserver config options are already set to `undefined`,
they don't get overridden by our config algorithm.

This commit ensures that webserver config values are not set when their values
are either `null` or `undefined`.
This commit is contained in:
Pascal Precht 2018-10-19 16:14:23 +02:00
parent 559c7152f7
commit df2aa30fb4
No known key found for this signature in database
GPG Key ID: 0EE28D8D6FD85D7D
1 changed files with 4 additions and 4 deletions

View File

@ -59,19 +59,19 @@ class EmbarkController {
const webServerConfig = {};
if (options.runWebserver !== null) {
if (options.runWebserver !== null && options.runWebserver !== undefined) {
webServerConfig.enabled = options.runWebserver;
}
if (options.serverHost !== null) {
if (options.serverHost !== null && options.serverHost !== undefined) {
webServerConfig.host = options.serverHost;
}
if (options.serverPort !== null) {
if (options.serverPort !== null && options.serverPort !== undefined) {
webServerConfig.port = options.serverPort;
}
if (options.openBrowser !== null) {
if (options.openBrowser !== null && options.openBrowser !== undefined) {
webServerConfig.openBrowser = options.openBrowser;
}