堆栈:“ hdevtools是一个库依赖项,但是由于my-app是构建目标,因此该包不需要提供任何库。”

时间:2018-10-28 21:12:32

标签: haskell haskell-stack

我试图将hdevtools添加到我的堆栈项目中,所以我运行了stack build hdevtools。安装似乎成功完成,并且我的文本编辑器停止报告通过堆栈安装的导入库(如aeson和tasty)丢失了。

但是,当我将此行添加到dependencies文件的package.yaml部分时,出现了问题:

- hdevtools >= 0.1 && < 1

,然后尝试再次运行stack build。我收到以下错误输出:

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for my-app-name-0.1.0.0:
    hdevtools is a library dependency, but the package provides no library
needed since my-app-name is a build target.

Some different approaches to resolving this:

  * Consider trying 'stack solver', which uses the cabal-install solver to attempt
    to find some working build configuration. This can be convenient when dealing
    with many complicated constraint errors, but results may be unpredictable.


Plan construction failed.

我尝试运行stack solver,但是抛出了记录在here中的异常。

如何将hdevtools声明为项目的依赖项?

2 个答案:

答案 0 :(得分:2)

@ alexis-king建议在标题为设置编辑器集成的部分中使用this guide中的var React = require("react") var Select = require("react-select") var PropTypes = require("prop-types") // also tried these -> // import React from 'react'; // import createClass from 'create-react-class'; // import PropTypes from 'prop-types'; // import Select from 'react-select'; const options = [ { value: 'chocolate', label: 'Chocolate' }, { value: 'strawberry', label: 'Strawberry' }, { value: 'vanilla', label: 'Vanilla' } ]; class User extends React.Component { state = { selectedOption: null, } handleChange = (selectedOption) => { this.setState({ selectedOption }); console.log(`Option selected:`, selectedOption); } render() { const { selectedOption } = this.state; /* return ( <h2>THIS WORKS!</h2> ) */ return ( <Select value={selectedOption} onChange={this.handleChange} options={options} /> ) // Doesn't work: // Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. } } module.exports = User

这适用于当前项目以及其他使用相同GHC版本的项目,但是升级到新的GHC版本时,您将需要再次运行它。

《国王指南》中的更多内容:

  

如上所述,堆栈安装不是您想要的。 ghc-mod,hlint,hoogle,weeder和intero之类的工具在作为沙箱的一部分而不是全局安装时效果最好,因为这可以确保它们与您的项目使用的当前GHC版本相匹配。

答案 1 :(得分:1)

  

如何将hdevtools声明为项目的依赖项?

hdevtool是可执行文件,而cabal没有开发依赖项的概念(例如在其他软件包管理器(如npm等)中)。因此,您所能做的就是在全局安装hdevtools并使其正常工作。