diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 ## Upcoming
 
+## 1.1.1
+
+Bug fixes:
+
+* Generate enums that only appear in query arguments ([#59](https://github.com/LeapYear/graphql-client/pull/59))
+
 ## 1.1.0
 
 Breaking changes:
diff --git a/exe/Codegen.hs b/exe/Codegen.hs
--- a/exe/Codegen.hs
+++ b/exe/Codegen.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
 
-import Control.Monad (forM_)
+import Control.Exception (SomeException, try)
+import Control.Monad (forM_, unless)
 import Data.ByteString (ByteString)
 import qualified Data.ByteString as ByteString
 import Data.FileEmbed (bsToExp, embedFile, getDir)
@@ -11,7 +15,8 @@
 import Options.Applicative
 import Path
 import Path.IO (doesFileExist, ensureDir, resolveFile', withSystemTempDir)
-import System.Process.Typed (proc, runProcess_)
+import System.Exit (ExitCode(..))
+import System.Process.Typed (proc, readProcess, runProcess_)
 
 data CliOptions = CliOptions
   { cliNode   :: Maybe FilePath
@@ -72,6 +77,14 @@
 
     nodeExe <- maybe (pure "node") (fmap toFilePath . resolveFile') cliNode
     configFile <- resolveFile' cliConfig
+
+    configFileExists <- doesFileExist configFile
+    unless configFileExists $
+      errorWithoutStackTrace $ "Config file doesn't exist: " ++ toFilePath configFile
+
+    try @SomeException (readProcess $ proc nodeExe ["-e", "console.log('TEST')"]) >>= \case
+      Right (ExitSuccess, "TEST\n", _) -> return ()
+      _ -> errorWithoutStackTrace $ "Could not find working Node executable: " ++ nodeExe
 
     runProcess_ $ proc nodeExe [toFilePath graphqlCodegen, toFilePath configFile]
   where
diff --git a/graphql-client.cabal b/graphql-client.cabal
--- a/graphql-client.cabal
+++ b/graphql-client.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 1e5cbd0fa96a9b044b801baafda6953cf3b51d16e5030235bd6bad5d908f07af
+-- hash: c25accf7e3c21d0afe69d04182d67865d8683906b4a860ad622fb99dcfcaa63d
 
 name:           graphql-client
-version:        1.1.0
+version:        1.1.1
 synopsis:       A client for Haskell programs to query a GraphQL API
 description:    A client for Haskell programs to query a GraphQL API.
 category:       Graphql
@@ -79,7 +79,7 @@
     , http-client-tls >=0.3.5.3 && <0.4
     , http-types >=0.12.1 && <0.13
     , mtl >=2.2.2 && <2.3
-    , optparse-applicative >=0.14.2.0 && <0.15.2
+    , optparse-applicative >=0.14.2.0 && <0.16.2
     , path >=0.6.1 && <0.8.0
     , path-io >=1.3.3 && <1.7.0
     , template-haskell >=2.12.0.0 && <3
diff --git a/js/graphql-codegen-haskell.js b/js/graphql-codegen-haskell.js
--- a/js/graphql-codegen-haskell.js
+++ b/js/graphql-codegen-haskell.js
@@ -52502,14 +52502,23 @@
     return SelectionSetParser;
 }());
 
-var parseVariableDefinitions = function (variableDefinitions) {
-    return variableDefinitions.map(function (_a) {
+var parseVariableDefinitions = function (schema, variableDefinitions) {
+    var args = variableDefinitions.map(function (_a) {
         var type = _a.type, variable = _a.variable;
         return ({
             name: variable.name.value,
             type: parseType$1(type),
         });
     });
+    var enums = new Set();
+    args.forEach(function (_a) {
+        var type = _a.type;
+        var enumName = getEnumName(schema, type);
+        if (enumName) {
+            enums.add(enumName);
+        }
+    });
+    return { args: args, enums: enums };
 };
 var parseType$1 = function (type, nullable) {
     if (nullable === void 0) { nullable = true; }
@@ -52521,6 +52530,13 @@
         case Kind.NON_NULL_TYPE:
             return parseType$1(type.type, false);
     }
+};
+var getEnumName = function (schema, type) {
+    if (type.list) {
+        return getEnumName(schema, type.inner);
+    }
+    var schemaType = schema.getType(type.name);
+    return isEnumType(schemaType) ? type.name : null;
 };
 
 var parseOperations = function (ast, schema, fragments) {
@@ -52562,7 +52578,8 @@
         var name = (_b = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : "unnamed" + this._unnamedCounter++;
         var capitalName = capitalize$1(name);
         var opType = capitalize$1(node.operation);
-        var args = parseVariableDefinitions((_c = node.variableDefinitions) !== null && _c !== void 0 ? _c : []);
+        var variableDefinitions = parseVariableDefinitions(this.schema, (_c = node.variableDefinitions) !== null && _c !== void 0 ? _c : []);
+        this.addEnums(variableDefinitions.enums);
         var schemaRoot;
         switch (node.operation) {
             case 'query':
@@ -52578,22 +52595,26 @@
         if (!schemaRoot) {
             throw new Error("Unable to find root schema type for operation type \"" + node.operation + "\"");
         }
-        var _d = parseSelectionSet(this.schema, node.selectionSet, schemaRoot, this.fragments), enums = _d.enums, fragments = _d.fragments, selections = _d.selections;
-        enums.forEach(function (e) {
-            _this._enums.add(e);
-        });
+        var selectionSet = parseSelectionSet(this.schema, node.selectionSet, schemaRoot, this.fragments);
+        this.addEnums(selectionSet.enums);
         return {
             name: name,
             queryText: __spreadArrays([
                 print(node)
-            ], fragments.map(function (fragment) {
+            ], selectionSet.fragments.map(function (fragment) {
                 return print(_this.fragments[fragment]);
             })).join('\n'),
             queryName: "" + capitalName + opType,
-            args: args,
+            args: variableDefinitions.args,
             schemaType: capitalName + "Schema",
-            schema: selections,
+            schema: selectionSet.selections,
         };
+    };
+    OperationDefinitionParser.prototype.addEnums = function (enums) {
+        var _this = this;
+        enums.forEach(function (e) {
+            _this._enums.add(e);
+        });
     };
     return OperationDefinitionParser;
 }());
diff --git a/src/Data/GraphQL/Query.hs b/src/Data/GraphQL/Query.hs
--- a/src/Data/GraphQL/Query.hs
+++ b/src/Data/GraphQL/Query.hs
@@ -6,7 +6,6 @@
 
 Definitions needed by GraphQL queries.
 -}
-{-# LANGUAGE DataKinds #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
diff --git a/src/Data/GraphQL/Result.hs b/src/Data/GraphQL/Result.hs
--- a/src/Data/GraphQL/Result.hs
+++ b/src/Data/GraphQL/Result.hs
@@ -6,7 +6,6 @@
 
 Definitions parsing responses from a GraphQL API.
 -}
-{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE DeriveTraversable #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
