2011-12-21 15 views
11

Tôi đang tạo một trang web đơn giản sử dụng yesod.Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn?

Nó đã hoạt động cho đến khi tôi thêm một trường kiểu UTCTime vào mô hình cơ sở dữ liệu của mình.

tôi ban đầu có một lỗi gợi ý tôi thêm "thời gian 1.2.0.3" đến file cabal tôi, vì vậy tôi đã làm và bây giờ tôi nhận được nhiều những lỗi tương tự mà không có sự gợi ý:

Model.hs:6:8: 
    Could not find module `Data.Time.Clock.UTC': 
     it is a hidden module in the package `time-1.2.0.3' 
     Use -v to see a list of the files searched for. 

Các GHC Command- dòng được tạo bởi cabal là:

"C:\Program Files (x86)\Haskell Platform\2011.2.0.1\bin\ghc.exe" --make -o dist\build\lpi\lpi.exe -hide-all-packages -fbuilding-cabal-package -package-conf dist\package.conf.inplace -i -idist\build\lpi\lpi-tmp -i. -idist\build\autogen -Idist\build\autogen -Idist\build\lpi\lpi-tmp -optP-DPRODUCTION -optP-include -optPdist\build\autogen\cabal_macros.h -odir dist\build\lpi\lpi-tmp -hidir dist\build\lpi\lpi-tmp -stubdir dist\build\lpi\lpi-tmp -package-id base-4.3.1.0-f520cd232cc386346843c4a12b63f44b -package-id bytestring-0.9.1.10-cd85f14e02463c02ba4c77d7adcdb54f -package-id clientsession-0.7.3.6-70ebb09e2b4c14267f1463cef3c932ea -package-id hamlet-0.10.5-1bacb5fe791e5cc9e28c8cf9f07c06e2 -package-id hjsmin-0.0.14-a1d374204877c150b681896452f205f4 -package-id mime-mail-0.4.1.0-05d76f10c6f18f7178113a6d760f371a -package-id monad-control-0.3.1-092d8fe82727181557b850f795f847bc -package-id persistent-0.6.4.3-6e59b956a206ce4f4a9296367507c2b8 -package-id persistent-sqlite-0.6.2.1-d32462e51baa09b53b6fd83dae922fc7 -package-id shakespeare-css-0.10.4-f8e17e4528d3a37edee74b13441720de -package-id shakespeare-js-0.10.3-dfec6b68f60671528332da06c9799659 -package-id shakespeare-text-0.10.3-a0ae9b85c3588ff2572080a6d1cdd4c3 -package-id template-haskell-2.5.0.0-7d9b1443ac5ab69e5ed705a487990deb -package-id text-0.11.1.9-a75bb47eca7b1c98d59b7697de77ca4d -package-id time-1.2.0.3-74ef6ac31cee9aec02b036978af002d2 -package-id yesod-0.9.3.4-6339564f13b46afd787d750cf9daa3bf -package-id yesod-auth-0.7.8-94a2849a33bb6f6d4c0e15615ef22bea -package-id yesod-core-0.9.3.6-a70073f17a6f050226a91a97c305403d -package-id yesod-default-0.4.1-1f30d8d893952d0661328b681d9ce291 -package-id yesod-form-0.3.4-a84ba844c230f9847bca7c0056375179 -package-id yesod-static-0.3.2-c82f332e85e2c9ba709375b8a14040a1 -O -Wall -threaded -O2 -XHaskell98 -XTemplateHaskell -XQuasiQuotes -XOverloadedStrings -XNoImplicitPrelude -XCPP -XMultiParamTypeClasses -XTypeFamilies -XGADTs -XGeneralizedNewtypeDeriving -XFlexibleContexts .\main.hs 

vì vậy thời gian-1.0.2.3 chắc chắn đang được tham chiếu.

Tất cả các gói đã được tải xuống trong 24 giờ qua để chúng được cập nhật khá nhiều.

Tôi làm cách nào để có thể ẩn Data.Time.Clock.UTC?

+0

Bạn có thể hiển thị tệp '.cabal' để minh họa chính xác cách bạn thêm phụ thuộc không? – dflemstr

+0

'Data.Time.Clock.UTC' không được hiển thị bởi gói' time', do đó bạn không thể truy cập nó từ bên ngoài. Bạn không thể trưng ra các mô-đun ẩn từ một gói, do đó, cách duy nhất, nhưng không được khuyến nghị¹ sẽ là cài đặt lại 'time' với một tệp' .cabal' đã thay đổi để hiển thị mô-đun. ¹Nếu bạn làm điều đó, mã của bạn sẽ không hoạt động cho bất kỳ ai khác, bởi vì chúng vẫn bị ẩn. –

+1

Tái xuất 'Data.Time.Clock'' Data.Time.Clock.UTC' (bị ẩn). Bạn đang sử dụng câu lệnh nhập nào trong Model.hs - hiện dữ liệu nhập 'Data.Time.Clock' có hoạt động không? –

Trả lời

5

Tôi đã cùng một lỗi thời gian gần đây amd câu trả lời là

import Data.Time 

thay vì

import Data.Time.Clock.UTC 

từ các mô-đun đầu tiên tái xuất khẩu các module ẩn.

+0

Chính xác. Tôi bắt đầu sử dụng UTCTime và Haskell phàn nàn rằng nó không được xác định. Vì vậy, tôi poked xung quanh cho đến khi tôi tìm thấy định nghĩa và nhập khẩu "Data.Time.Clock.UTC", mà không hoạt động. Đã thay đổi thành "Data.Time" và hiện tại. Cảm ơn bạn. – arx

3

Nghe tôi giống như một biến thể của địa ngục phụ thuộc cabal. Nếu bạn chạy ghc-pkg list time, tôi đoán bạn sẽ thấy nhiều phiên bản thời gian được cài đặt. Ứng dụng của bạn có thể đang sử dụng phiên bản mới hơn các thư viện cơ bản.

Trong tệp cabal của bạn, hãy thử dựa vào chính xác cùng một phiên bản thời gian như đang được đề cập trong thông báo lỗi và xem có giải quyết được không.

+0

Không phải là vấn đề (xem câu trả lời khác), nhưng cảm ơn Yesod. Tôi là một tuần rưỡi trong Haskell và ba ngày vào Yesod và thích cả hai. – arx

Các vấn đề liên quan