Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 莎士比亚js未能在Heroku上编译_Haskell_Deployment_Heroku_Web Deployment_Yesod - Fatal编程技术网

Haskell 莎士比亚js未能在Heroku上编译

Haskell 莎士比亚js未能在Heroku上编译,haskell,deployment,heroku,web-deployment,yesod,Haskell,Deployment,Heroku,Web Deployment,Yesod,在安装shakespeare-js-1.0.2时,将我的简单Yesod应用程序部署到Heroku cabal时失败 Building shakespeare-js-1.0.2... Building persistent-1.0.2.2... Building yaml-0.8.2.1... Building tls-extra-0.6.1... Failed to install shakespeare-js-1.0.2 Last 10 lines of the build log ( /ap

在安装shakespeare-js-1.0.2时,将我的简单Yesod应用程序部署到Heroku cabal时失败

Building shakespeare-js-1.0.2...
Building persistent-1.0.2.2...
Building yaml-0.8.2.1...
Building tls-extra-0.6.1...
Failed to install shakespeare-js-1.0.2
Last 10 lines of the build log ( /app//.cabal/logs/shakespeare-js-1.0.2.log ):
Building shakespeare-js-1.0.2...
Preprocessing library shakespeare-js-1.0.2...
[1 of 3] Compiling Text.Julius ( Text/Julius.hs, dist/build/Text/Julius.o )
[2 of 3] Compiling Text.Coffee ( Text/Coffee.hs, dist/build/Text/Coffee.o )
Text/Coffee.hs:56:7:
`preEscapeBegin' is not a (visible) field of constructor `PreConvert'
Text/Coffee.hs:57:7:
`preEscapeEnd' is not a (visible) field of constructor `PreConvert'
该项目是一个简单的网站,使用WAI和Warp打印hello world。 在我的阴谋集团文件中,我只指定YesSOD(1.1.9)的最新版本,以查看它是否在Heroku上可用(它还没有使用YesSOD或shakespeare js):

这个项目使用类似的堆栈在我的虚拟机上本地构建和运行,包括shakespeare-js-1.0.2

我尝试了以下方法:

  • 在.cabal文件中强制使用除1.0.2以外的更新或旧版本的shakespeare js。同样的编译错误也会出现
  • 在黑暗中,我尝试从.cabal文件中删除一些可能影响编译的扩展名,如TemplateHaskell
编辑:

  • 当我使用shakespeare js<1.0.2时,在heroku选择1.0.1后,我得到一个编译错误,该错误也无法编译
  • 我无法让shakespeare-js-1.1.2(最新版本)在任何地方编译,即使是在本地
我通过强制莎士比亚<1.0.3解决了这个错误
这并不能解决无法编译莎士比亚(yesod)最新版本的问题。

问题在于类型
预转换
在和之间更改

在旧版本中,
preEscapeBegin
preEscapeEnd
是构造函数
PreConvert
的字段,但在版本1.0.3中已将其删除

因此,解决办法是

  • 使用较旧版本的
    莎士比亚
    ,指定
    莎士比亚<1.0.3
  • 使用足够新版本的
    莎士比亚js
    ,指定
    莎士比亚js>=1.1.2

(如果您使用较新的
莎士比亚
版本,可能需要进一步调整,我没有尝试过。)

正如他所说,较旧版本和较新版本也不起作用-我已经有几天遇到了相同的问题。我没有尝试过,但我希望
莎士比亚js
能够使用较旧版本的
莎士比亚
,我或多或少希望
shakespeare-js-1.1.2
shakespeare-1.0.3
一起工作。后者可能还需要其他软件包的更新版本,而前者可能需要使用某些其他软件包的旧版本,而不是默认情况下的cabal picks。但是
shakespeare-1.0.3
显然不能与
shakespeare-js<1.1.2
一起使用。你试过什么组合?哦,我没有仔细阅读你的评论。我误解了你第一个建议中的莎士比亚;在我最后的尝试中,我尝试了不同版本的《莎士比亚js》,旧版本不起作用,新版本带来了我无法解决的新问题。但是,上述错误在限制
shakespeare<1.0.3
的情况下不再发生。所以谢谢你的提示!尝试使用
shakespeare<1.0.3
,而不是
shakespeare js
。快速问题:在Daniel建议的修复之后,您不会遇到以下错误:
拒绝:ghc-path-0.1.0.9(未知包:ghc)
executable Website
  extensions:NoImplicitPrelude
             TemplateHaskell
             QuasiQuotes
             OverloadedStrings
             CPP
             MultiParamTypeClasses
             TypeFamilies
             GADTs
             GeneralizedNewtypeDeriving
             FlexibleContexts
             EmptyDataDecls
             NoMonomorphismRestriction



  main-is:             source/Main.hs
  -- other-modules:       
  build-depends:       base          == 4.5.*
                     , http-types   
                     , template-haskell 
                     , wai           
                     , wai-extra     
                     , warp          
                     , yesod         == 1.1.9