Sbt-LESS: TypeError: [object Object] is not a function, it is object

280 Views Asked by At

After updating Sbt-less from 1.0.6 to 1.1.0 on a Play project, I am receiving this error output when I try to git push heroku master:

remote:        [error] TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [info] 
remote:        [error] TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [info] 
remote:        [error] TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [info] 
remote:        [error] TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [info] 
remote:        [error] TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [info] 
remote:        com.typesafe.sbt.jse.SbtJsTask$JsTaskFailure: TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:            at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:            at module.js:456
remote:            at module.js:474
remote:            at module.js:356
remote:            at module.js:312
remote:            at module.js:364
remote:            at require (module.js:380)
remote:            at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:            at module.js:456
remote:            at module.js:474
remote:            at module.js:356
remote:            at module.js:312
remote:            at module.js:364
remote:            at require (module.js:380)
remote:            at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:            at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:            at module.js:456
remote:            at module.js:474
remote:            at module.js:356
remote:            at module.js:312
remote:            at module.js:497
remote:            at startup (trireme.js:142)
remote:            at trireme.js:923
remote:        
remote:         at com.typesafe.sbt.jse.SbtJsTask$$anonfun$com$typesafe$sbt$jse$SbtJsTask$$executeJsOnEngine$1.apply(SbtJsTask.scala:195)
remote:         at com.typesafe.sbt.jse.SbtJsTask$$anonfun$com$typesafe$sbt$jse$SbtJsTask$$executeJsOnEngine$1.apply(SbtJsTask.scala:167)
remote:         at scala.util.Success$$anonfun$map$1.apply(Try.scala:206)
remote:         at scala.util.Try$.apply(Try.scala:161)
remote:         at scala.util.Success.map(Try.scala:206)
remote:         at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
remote:         at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
remote:         at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
remote:         at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
remote:         at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
remote:         at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
remote:         at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
remote:         at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
remote:        [error] (web-assets:less) com.typesafe.sbt.jse.SbtJsTask$JsTaskFailure: TypeError: [object Object] is not a function, it is object. (/tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js#4)    at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less/index.js:4
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/lib/less-node/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/node-modules/webjars/less/index.js:1
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:364
remote:        [error]     at require (module.js:380)
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:14
remote:        [error]     at /tmp/scala_buildpack_build_dir/project/target/less/sbt-less-1.1.0.jar:3
remote:        [error]     at module.js:456
remote:        [error]     at module.js:474
remote:        [error]     at module.js:356
remote:        [error]     at module.js:312
remote:        [error]     at module.js:497
remote:        [error]     at startup (trireme.js:142)
remote:        [error]     at trireme.js:923
remote:        [error] Total time: 5 s, completed Mar 11, 2016 3:18:15 AM
remote: 
remote:  !     ERROR: Failed to run sbt!
remote:        We're sorry this build is failing. If you can't find the issue in application
remote:        code, please submit a ticket so we can help: https://help.heroku.com
remote:        You can also try reverting to the previous version of the buildpack by running:
remote:        $ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-scala#previous-version
remote:        
remote:        Thanks,
remote:        Heroku
remote: 
remote: 
remote:  !     Push rejected, failed to compile Play 2.x - Scala app
remote: 
remote: Verifying deploy...
remote: 
remote: !       Push rejected to vetpros-stage.
remote: 
To https://git.heroku.com/vetpros-stage.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/vetpros-stage.git'

The project itself works fine on the machine I am coding with. I have tried heroku run "sbt clean-files" which seemed to have no effect. I read somewhere that deleting /target folders might help too, however when I try to delete them from Heroku's bash terminal, it does not make the change. Any advice would be helpful, thank you in advance!

Edit: I have come up with a workaround, rather obvious (so many of you probably already know), but you can simply revert back to sbt-less 1.0.6 each time you upload to Heroku. Annoying, but at least it gets the job done.

2

There are 2 best solutions below

1
codefinger On

Try running a clean build by setting:

$ heroku config:set SBT_CLEAN="true"

Then redeploy your app.

The heroku run command runs in a separate container, isolated from your app, and it will not permanently modify the filesystem (i.e the slug image).

0
Itchy On

I had the same problem locally and the trick was not (only?) to delete the target folder but also project/target (and maybe even project/project, however this was not necessary in my case).

Maybe if you try to delete them from Heroku's bash terminal it also works for you.

(I got this solution from issue #68 (LESS compilation fails with exception) on the sbt-less project.)