Scaffold Out A Serverless ClojureScript Project
sls create --template aws-clojurescript-gradle
Say Hello To The Files
Write Some Clojure Code!
(set! (.-exports js/module) #js {:hello hello :now now :example example})
(defn example [event ctx cb] (go (let [response (<! (http/get "https://sv443.net/jokeapi/category/Programming")) theGloriousData (->> response (:body) (clj->js) (.stringify js/JSON))] (cb nil (clj->js {:statusCode 200 :headers {"Content-Type" "application/json"} :body theGloriousData})))))
(ns serverless.functions (:require-macros [cljs.core.async.macros :refer [go]]) (:require [cljs.nodejs :as nodejs] [cljs-http.client :as http] [cljs.core.async :refer [put! chan <!]]))
Add Example To The Serverless Config Yaml
example: handler: build/clojurescript/main/functions.example events: - http: path: example method: get
plugins: - serverless-offline
Add ClojureScript Dependencies In "build.gradle"
dependencies { implementation 'org.clojure:clojurescript:1.10.312' implementation 'org.clojure:core.async:0.6.532' devImplementation 'org.clojure:java.classpath' compile 'cljs-http:cljs-http:0.1.46' }
Reference Error ----------------------------------------
ReferenceError: XMLHttpRequest is not defined
at goog.net.DefaultXmlHttpFactory.createInstance (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:2488:126)
at Object.goog.net.XmlHttp (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:2486:1501)
at goog.net.XhrIo.createXhr (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:2500:250)
at goog.net.XhrIo.send (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:2495:351)
at cljs_http.core.xhr (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3610:28)
at cljs_http.core.request (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3621:437)
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3640:13
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3659:344
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3664:54
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3633:223
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3634:397
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3648:250
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3651:4
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3653:239
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3654:402
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3643:29
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3656:100
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3669:342
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3672:62
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3664:254
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3666:466
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3672:332
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3636:458
at Function.cljs_http.client.get.cljs$core$IFn$_invoke$arity$variadic (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3678:141)
at cljs_http.client.get (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3677:381)
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3701:45
at d (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3699:347)
at b (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3700:350)
at cljs.core.async.impl.ioc_helpers.run_state_machine (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3268:131)
at cljs.core.async.impl.ioc_helpers.run_state_machine_wrapped (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3268:278)
at /Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3702:400
at Immediate.cljs.core.async.impl.dispatch.process_messages (/Users/jim/Git-Projects/XMLHttpRequest-Cljs-Core.Async-Error-Solved/build/clojurescript/main/functions.js:3225:232)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)
For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information ---------------------------
Operating System: darwin
Node Version: 10.17.0
Framework Version: 1.59.3
Plugin Version: 3.2.5
SDK Version: 2.2.1
Components Core Version: 1.1.2
Components CLI Version: 1.4.0
Add Xhr2
npmDeps = ['dayjs': '1.8.17', 'xhr2': '0.2.0']
Require Xhr2 In Your Code
(set! js/XMLHttpRequest (nodejs/require "xhr2"))
const XMLHttpRequest = require("xhr2")
Try It Out
./gradlew clean build
severless offline start
And Now You're In Business!
Happy coding!