2

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.

Drakken Saer
  • 859
  • 2
  • 10
  • 29
  • Any chance you found a solution to this? You still can deploy using the Heroku Sbt plugin (https://devcenter.heroku.com/articles/deploying-scala-and-play-applications-with-the-heroku-sbt-plugin) though. – Thomas May 03 '16 at 15:06
  • No solution as of yet. I will check out the link though, thank you. I've come up with a workaround though, I'll edit my answer to include it. – Drakken Saer May 03 '16 at 18:06
  • The Sbt plugin solution drawback is that it takes much more time (about 45 minutes for me) to upload the slug than to tell Heroku to do all the work. FYI, the command is `activator stage deployHeroku`, not `sbt stage deployHeroku`. I too switched back to 1.0.6. – Thomas May 04 '16 at 07:51

2 Answers2

1

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).

codefinger
  • 10,088
  • 7
  • 39
  • 51
0

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.)

Itchy
  • 2,263
  • 28
  • 41