Uploaded image for project: 'ClojureScript'
  1. CLJS-2792

CraftyJS NPM dependency cannot be imported

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects versions: 1.10.238
    • Fix versions: None
    • Environment:

      Operation System: Windows 10
      Leiningen Version: Leiningen 2.8.1
      Java Version: Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM
      ClojureScript Version: 1.10.238

      Description

      I'm using ClojureScript with Figwheel and trying to use CraftyJs in ClojureScript.
      This is my project.clj

      (defproject my_project "0.1.0-SNAPSHOT"
      :description "FIXME: write this!"
      :url "http://example.com/FIXME"
      :license {:name "Eclipse Public License"
      :url "http://www.eclipse.org/legal/epl-v10.html"}

      :min-lein-version "2.7.1"

      :dependencies [[org.clojure/clojure "1.9.0"]
      [org.clojure/clojurescript "1.10.238"]
      [org.clojure/core.async "0.4.474"]]

      :plugins [[lein-figwheel "0.5.16"]
      [lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]

      :source-paths ["src"]

      :cljsbuild {:builds
      [{:id "dev"
      :source-paths ["src"]

      ;; The presence of a :figwheel configuration here
      ;; will cause figwheel to inject the figwheel client
      ;; into your build
      :figwheel {:on-jsload "my_project.core/on-js-reload"
      ;; :open-urls will pop open your application
      ;; in the default browser once Figwheel has
      ;; started and compiled your application.
      ;; Comment this out once it no longer serves you.
      :open-urls ["http://localhost:3449/index.html"]}

      :compiler {:main my_project.core
      :asset-path "js/compiled/out"
      :install-deps true
      :npm-deps {:craftyjs "0.8.0"}
      :output-to "resources/public/js/compiled/my_project.js"
      :output-dir "resources/public/js/compiled/out"
      :source-map-timestamp true
      ;; To console.log CLJS data-structures make sure you enable devtools in Chrome
      ;; https://github.com/binaryage/cljs-devtools
      :preloads [devtools.preload]}}
      ;; This next build is a compressed minified build for
      ;; production. You can build this with:
      ;; lein cljsbuild once min
      {:id "min"
      :source-paths ["src"]
      :compiler {:output-to "resources/public/js/compiled/my_project.js"
      :main my_project.core
      :optimizations :advanced
      :pretty-print false}}]}

      :figwheel

      {;; :http-server-root "public" ;; default and assumes "resources" ;; :server-port 3449 ;; default ;; :server-ip "127.0.0.1" :css-dirs ["resources/public/css"] ;; watch and update CSS ;; Start an nREPL server into the running figwheel process ;; :nrepl-port 7888 ;; Server Ring Handler (optional) ;; if you want to embed a ring handler into the figwheel http-kit ;; server, this is for simple ring servers, if this ;; doesn't work for you just run your own server :) (see lein-ring) ;; :ring-handler hello_world.server/handler ;; To be able to open files in your editor from the heads up display ;; you will need to put a script on your path. ;; that script will have to take a file path and a line number ;; ie. in ~/bin/myfile-opener ;; #! /bin/sh ;; emacsclient -n +$2 $1 ;; ;; :open-file-command "myfile-opener" ;; if you are using emacsclient you can just use ;; :open-file-command "emacsclient" ;; if you want to disable the REPL ;; :repl false ;; to configure a different figwheel logfile path ;; :server-logfile "tmp/logs/figwheel-logfile.log" ;; to pipe all the output to the repl ;; :server-logfile false }

      ;; Setting up nREPL for Figwheel and ClojureScript dev
      ;; Please see:
      ;; https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl
      :profiles {:dev {:dependencies [[binaryage/devtools "0.9.9"]
      [figwheel-sidecar "0.5.16"]
      [cider/piggieback "0.3.1"]]
      ;; need to add dev source path here to get user.clj loaded
      :source-paths ["src" "dev"]
      ;; for CIDER
      ;; :plugins [[cider/cider-nrepl "0.12.0"]]
      :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}
      ;; need to add the compliled assets to the :clean-targets
      :clean-targets ^{:protect false} ["resources/public/js/compiled"
      :target-path]}})

      However when running lein figwheel i see following in the console:

      Compiling build :dev to "resources/public/js/compiled/my_project.js" from ["src"]...
      [eval]:85
      !id.startsWith(goog;
      ^^^^

      SyntaxError: missing ) after argument list
      at createScript (vm.js:74:10)
      at Object.runInThisContext (vm.js:116:10)
      at Object.<anonymous> ([eval]-wrapper:6:22)
      at Module._compile (module.js:624:30)
      at evalScript (bootstrap_node.js:480:27)
      at startup (bootstrap_node.js:177:9)
      at bootstrap_node.js:626:3

      Successfully compiled build :dev to "resources/public/js/compiled/my_project.js" in 19.529 seconds.
      and i can't import the library from my ClojureScript, i also see this:

      Uncaught Error: Undefined nameToPath for craftyjs
      at visitNode (base.js:1357)
      at Object.goog.writeScripts_ (base.js:1369)
      at Object.goog.require [as require_figwheel_backup_] (base.js:706)
      at index.html:14
      I already tried to manually delete the compiled JS output folder

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              alex+import import
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated: