【问题标题】:Sbt-LESS: TypeError: [object Object] is not a function, it is objectSbt-LESS: TypeError: [object Object] 不是函数,它是对象
【发布时间】:2016-03-11 03:22:27
【问题描述】:

在 Play 项目中将 Sbt-less 从 1.0.6 更新到 1.1.0 后,当我尝试 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'

项目本身在我正在编码的机器上运行良好。我试过heroku run "sbt clean-files" 似乎没有效果。我在某处读到删除/target 文件夹也可能有帮助,但是当我尝试从 Heroku 的 bash 终端中删除它们时,它并没有做出改变。任何建议都会有所帮助,在此先感谢您!

编辑:我想出了一个解决方法,相当明显(你们很多人可能已经知道了),但是每次上传到 Heroku 时,您都可以简单地恢复到 sbt-less 1.0.6。烦人,但至少它完成了工作。

【问题讨论】:

  • 您有没有机会找到解决方案?不过,您仍然可以使用 Heroku Sbt 插件 (devcenter.heroku.com/articles/…) 进行部署。
  • 目前还没有解决方案。不过我会检查链接,谢谢。不过,我想出了一个解决方法,我会编辑我的答案以包含它。
  • Sbt 插件解决方案的缺点是上传 slug 比告诉 Heroku 完成所有工作需要更多的时间(对我来说大约 45 分钟)。仅供参考,命令是activator stage deployHeroku,而不是sbt stage deployHeroku。我也切换回 1.0.6。

标签: scala heroku playframework sbt xsbt-web-plugin


【解决方案1】:

尝试通过设置运行干净的构建:

$ heroku config:set SBT_CLEAN="true"

然后重新部署您的应用。

heroku run 命令在与您的应用程序隔离的单独容器中运行,并且不会永久修改文件系统(即slug image)。

【讨论】:

  • +1 获取信息,不幸的是我仍然遇到同样的错误。我不明白怎么了! :(
【解决方案2】:

我在本地遇到了同样的问题,诀窍不是(仅?)删除 target 文件夹,还删除 project/target(甚至可能是 project/project,但在我的情况下这不是必需的)。

也许如果您尝试从 Heroku 的 bash 终端中删除它们,它也适用于您。

(我从 sbt-less 项目的 issue #68 (LESS compilation fails with exception) 获得了这个解决方案。)

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 2019-08-12
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多