Yesod: Could not find module `Yesod.Auth.Account' - haskell

I'm developing a website with scaffolded Yesod (stack) and I have to import Yesod.Auth.Account to use internals accounts instead openid or others. But when i try import this module i've this output:
/usr/home/giulio/Lavori/karmen/src/Foundation.hs:27:1: error:
Could not find module `Yesod.Auth.Account'
Use -v to see a list of the files searched for.
|
27 | import Yesod.Auth.Account
| ^^^^^^^^^^^^^^^^^^^^^^^^^
I tried to install the module, build, use stack clean and stack build but
nothing work.

That comes from the yesod-auth-account package which doesn't seem to be on Stackage. This means you must add it to the extra-deps stanza of your stack.yaml file. Docs here.
Probably something like this:
extra-deps:
- yesod-auth-account-1.4.3
You may also want to use the stack solver command.

Related

stack install error: Recommended extra-dep

I am currently trying to install stack to utilise the software Taiji. I have been able to run 'stack setup', but get an error when I run stack install:
C:\Users\My Name\Taiji-1.2.1>stack install
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for shelly-1.8.1:
unix needed, but the stack configuration has no specified version (latest matching version is 2.7.2.2)
needed due to Taiji-1.2.1 -> shelly-1.8.1
Some different approaches to resolving this:
* Recommended action: try adding the following to your extra-deps in C:\Users\My Name\Taiji-1.2.1\stack.yaml:
- unix-2.7.2.2#sha256:9e93f93cc5a065248120136e83a0a6d1ce93d6eb5ef2a2543f9593e93e164d24,3496
Plan construction failed.
I am guessing I'll have to install another package of some sort and put it into the Taiji-1.2.1 folder, but am not exactly sure how(I am completely new to stack/programming). Is anyone able to help me with this issue? Thanks kindly.
When you see this error, you will need to open stack.yaml (the error message contains the full path), find the line saying # extra-deps: [], and replace it with the line shown in the error message:
extra-deps:
- unix-2.7.2.2#sha256:9e93f93cc5a065248120136e83a0a6d1ce93d6eb5ef2a2543f9593e93e164d24,3496
(If you already have something listed in extra-deps, then you can just add that line to the end of extra-deps rather than replacing the whole thing.)
Now, this is usually enough. But you’ve got a further problem: you are using Windows, but you’re trying to compile a program which depends on the unix package — a package which is not available on Windows. Due to this, you will not be able to compile your program on Windows.
(As for why all that extra-deps stuff is needed: basically, Stack maintains a list of package versions known to work with each other, but occasionally you will run into a package which isn’t in that list. In that case you will need to list that package version in extra-deps to tell Stack which version to use.)

Can not load a file that uses standard libraries in haskell

Hi I use GHCI and can normally load my files. Now I need to load a file that uses random. I get this error.
Chatterbot.hs:3:1: error:
Could not find module ‘System.Random’
Use -v to see a list of the files searched for.
|
3 | import System.Random
| ^^^^^^^^^^^^^^^^^^^^
This is very weird since it works for my friend who also have just installed GHCI and did nothing other than me. The main difference is that I am on windows. I really don t understand this and have tried googling a bit and many people speak about stack but it seems annoying and It obviously works for my friend without it.
Thanks in advance
EDIT problem solved. I needed to update cabal then I ran cabal install random and it worked well. Thanks everyone for the help!
If you are using a version of cabal-install >= 3.0 (check with cabal --version), then, instead of creating a cabal package, you can move to an empty folder and type:
cabal install --lib --package-env . random
This creates a .ghc.environment file in the folder. ghci sessions started inside that folder will pick it up, and they will be able to import System.Random.
If that works correctly, you might want to install "random" globally so that any invocation of ghci can use it:
cabal install --lib random
This creates/modifies the global environment file located at ~/.ghc/$ARCH-$OS-$GHCVER/environments/default.
The System.Random module is part of the random package, not of the base package. You thus should install it. If you for example use cabal, you can install it with cabal install random.
If you use Haskell stack for example, you can add it to your package-name.cabal file:
-- …
build-depends:
base >=4.7 && <5
, random >=1.0 && <2

Unable to import native nodejs module in electron project

I'm working on an open source electron project which I am building using webpack. One requirement for my project is to use the nodegit library which has to be built as a native module.
I've followed what appears to be conventional advice when working with native modules and electron. That is, I run electron-rebuild, have configured the source package to use and finally have configured node-loader to catch the import of any .node files.
Unfortunately, when I go to include the module, I end up with this error:
ERROR in ./node_modules/nodegit/dist/nodegit.js
Module not found: Error: Can't resolve '../build/Debug/nodegit.node' in
'C:\Users\atrauzzi\Development\atrauzzi\gerty\node_modules\nodegit\dist'
# ./node_modules/nodegit/dist/nodegit.js 18:11-49
# ./src/Layer/Domain/Thunktor/Git/CloneGitRepository.ts
# ./src/Layer/Gerty/Component/Repository/AddGitHubRepository.tsx
# ./src/Layer/Gerty/Component/Repository/AddRepository.tsx
# ./src/Layer/Gerty/Component/Workspace.tsx
# ./src/Layer/Gerty/Component/App.tsx
# ./src/Layer/Gerty/GertyServiceProvider.ts
# ./src/Bundle/GertyElectron.ts
The only thing I can see that's suspicious at this point is that when I rebuild the module to work with electron, I only get a Release directory, when the import seems to be looking for Debug:
This could be a red herring however as nodegit is written to try Debug as a fallback after Release has failed.
The general ask here is "How do I get this native module working in my project?".
I also have a corresponding question over at the repo, although on the off chance that my issue is unrelated to the library itself, or that there are some battle-worn veterans of native modules in electron, I figured SO would be a good place to check as well.
Try configuring your webpack by specifying the native module as an external dependancy rather than load it using the node-loader.
https://webpack.js.org/configuration/externals/

Can not find module after installing it

I am trying to install "threepenny-gui", I simply do it by
cabal install threepenny-gui
It is a school project that I have to use it and you can find the start code here.
After I have installed it and run Calculator.hs without changing anything I get the error
ThreepennyPages.hs:13:18:
Could not find module ‘Data.Aeson’
Perhaps you meant Data.Version (from base-4.8.2.0)
Use -v to see a list of the files searched for.
ThreepennyPictures.hs:17:18:
Could not find module ‘Graphics.UI.Threepenny’
Use -v to see a list of the files searched for.
ThreepennyPictures.hs:18:8:
Could not find module ‘Graphics.UI.Threepenny.Core’
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
I read here in section 4.1 that
This happens when you install a package globally, and the previous packages were installed locally.
But does not give any real solution. How should I install it correctly? Have been having similar problems when installing other modules.

Issue using Hoe from cabal sandbox - System.Random not found

I'm trying to use the Hoe utility from a cabal sandbox and am presented with the following error:
lyndon#endpin ~/Haskell-Sandboxes/hoe-1.0.1 ./.cabal-sandbox/bin/hoe head
compile error: <no location info>:
Could not find module ‘System.Random’
Use -v to see a list of the files searched for.
I believe that this is due to Hoe using Hint to interpret expressions at runtime, and as part of this, expecting to be able to load globally installed modules. However, since I'm using a cabal-sandbox, modules are only installed locally.
I've attempted to look for any environment variables I can use to specify the location of the random module as ./.cabal-sandbox/lib/x86_64-osx-ghc-7.8.3/random-1.1, however nothing obvious has appeared.
22070308 suggested that HASKELL_PACKAGE_SANDBOX might help, but it doesn't seem to.
I actually just came across the solution
Setting GHC_PACKAGE_PATH to include the sandbox, and the default package location:
lyndon#endpin ~/Haskell-Sandboxes/hoe-1.0.1 find ~/ghc_versions/ghc-7.8.3/ | grep package.cache
/Users/lyndon/ghc_versions/ghc-7.8.3//lib/ghc-7.8.3/package.conf.d/package.cache
lyndon#endpin ~/Haskell-Sandboxes/hoe-1.0.1 GHC_PACKAGE_PATH=~/ghc_versions/ghc-7.8.3//lib/ghc-7.8.3/package.conf.d:./.cabal-sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d ./.cabal-sandbox/bin/hoe head
asdf
'a'

Resources