diff --git a/ci/docker/wasm32-unknown-emscripten/Dockerfile b/ci/docker/wasm32-unknown-emscripten/Dockerfile
index de8e35353b8e0d77596f861fe56110ce853dda96..c0ce825ed74436156dcacddb77084f77d5aebbcf 100644
--- a/ci/docker/wasm32-unknown-emscripten/Dockerfile
+++ b/ci/docker/wasm32-unknown-emscripten/Dockerfile
@@ -3,11 +3,17 @@ FROM ubuntu:19.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates \
+    g++ \
+    make \
+    file \
     curl \
     gcc \
     git \
     libc6-dev \
     python \
+    cmake \
+    sudo \
+    gdb \
     xz-utils
 
 COPY emscripten.sh /
diff --git a/ci/emscripten-entry.sh b/ci/emscripten-entry.sh
index e92c1cb1bf60575cfa32bcb464a36e475f314a93..0016f5660b0eb13dc81e7317c96c0a348ea44695 100755
--- a/ci/emscripten-entry.sh
+++ b/ci/emscripten-entry.sh
@@ -15,6 +15,6 @@ set -ex
 source /emsdk-portable/emsdk_env.sh &> /dev/null
 
 # emsdk-portable provides a node binary, but we need version 8 to run wasm
-export PATH="/node-v8.0.0-linux-x64/bin:$PATH"
+export PATH="/node-v12.3.1-linux-x64/bin:$PATH"
 
 exec "$@"
diff --git a/ci/emscripten.sh b/ci/emscripten.sh
index ce3b541a1767d89240fc7e840ee7c2c7f8b349f8..db3132325503d081e3dfff087708a2897d51d5b2 100644
--- a/ci/emscripten.sh
+++ b/ci/emscripten.sh
@@ -34,8 +34,8 @@ curl --retry 5 -L https://s3.amazonaws.com/mozilla-games/emscripten/releases/ems
 
 cd /emsdk-portable
 ./emsdk update
-hide_output ./emsdk install sdk-1.37.20-64bit
-./emsdk activate sdk-1.37.20-64bit
+hide_output ./emsdk install sdk-1.38.15-64bit
+./emsdk activate sdk-1.38.15-64bit
 
 # Compile and cache libc
 # shellcheck disable=SC1091
@@ -51,6 +51,6 @@ chmod a+rxw -R /emsdk-portable
 
 # node 8 is required to run wasm
 cd /
-curl --retry 5 -L https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-x64.tar.xz | \
+curl --retry 5 -L https://nodejs.org/dist/v12.3.1/node-v12.3.1-linux-x64.tar.xz | \
     tar -xJ