错误:找不到文件或目录“bower_components”

21

我正在尝试制作我的第一个 Yeoman 应用程序。我按照下面链接中的每一步进行操作:http://ponderingdeveloper.com/2013/03/08/preparing-a-windows-machine-to-use-yeoman/

当我执行 yo webapp 命令时,一切都很顺利。

但是当我使用 grunt 命令时,我遇到了以下错误:

    grunt --trace


    Running "jshint:all" (jshint) task
    >> 4 files lint free.

    Running "clean:server" (clean) task
    Cleaning ".tmp"...OK

    Running "concurrent:test" (concurrent) task

    Running "coffee:dist" (coffee) task
        Warning: Errno::ENOENT on line ["33"] of C: No such file or directory - C:/D
    ysk Google/Sublime/Norbert/motocycle/app/bower_components
        Run with --trace to see the full backtrace Use --force to continue.

        Aborted due to warnings.

我查找了bower_components文件夹 - 它不存在。我知道我可以在.bowerrc文件中更改目录,但我不知道哪个目录是正确的,我找不到它。

编辑:程序版本:

C:\Dysk Google\Sublime\Norbert\motocycle>grunt --version
grunt-cli v0.1.8
grunt v0.4.1

C:\Dysk Google\Sublime\Norbert\motocycle>yo --version
1.0.0-beta.6

C:\Dysk Google\Sublime\Norbert\motocycle>bower --version
0.9.2

C:\Dysk Google\Sublime\Norbert\motocycle>npm view generator-webapp
npm http GET https://registry.npmjs.org/generator-webapp
npm http 200 https://registry.npmjs.org/generator-webapp

{ name: 'generator-webapp',
  description: 'Default Yeoman generator for scaffolding out a front-end web app
',
  'dist-tags': { latest: '0.2.2' },
  versions:
   [ '0.1.0',
     '0.1.1',
     '0.1.2',
     '0.1.3',
     '0.1.4',
     '0.1.5',
     '0.1.6',
     '0.1.7',
     '0.2.0',
     '0.2.1',
     '0.2.2' ],
  maintainers: 'sindresorhus <sindresorhus@gmail.com>',
  time:
   { '0.1.0': '2013-02-14T18:59:31.790Z',
     '0.1.1': '2013-02-14T20:50:59.965Z',
     '0.1.2': '2013-02-15T16:08:42.448Z',
     '0.1.3': '2013-02-15T23:08:13.255Z',
     '0.1.4': '2013-02-16T01:02:02.732Z',
     '0.1.5': '2013-02-25T19:56:03.458Z',
     '0.1.6': '2013-04-08T21:07:10.932Z',
     '0.1.7': '2013-04-10T22:12:39.652Z',
     '0.2.0': '2013-05-13T17:53:11.177Z',
     '0.2.1': '2013-05-13T18:06:06.017Z',
     '0.2.2': '2013-05-13T18:09:12.609Z' },
  author: 'Chrome Developer Relations',
  repository:
   { type: 'git',
     url: 'git://github.com/yeoman/generator-webapp.git' },
  users: { passy: true },
  version: '0.2.2',
  keywords:
   [ 'yeoman-generator',
     'web',
     'app',
     'front-end',
     'h5bp',
     'modernizr' ],
  homepage: 'https://github.com/yeoman/generator-webapp',
  bugs: 'https://github.com/yeoman/generator-webapp/issues',
  main: 'app/index.js',
  scripts: { test: 'mocha --reporter spec' },
  dependencies:
   { 'yeoman-generator': '~0.11.1',
     cheerio: '~0.10.8' },
  peerDependencies: { 'generator-mocha': '~0.1.1' },
  devDependencies: { mocha: '~1.9.0' },
  engines: { node: '>=0.8.0' },
  licenses: { type: 'BSD' },
  readmeFilename: 'readme.md',
  dist:
   { shasum: 'd9f69e7dbf0fd680b30abaf710d47fe38e50fd12',
     tarball: 'http://registry.npmjs.org/generator-webapp/-/generator-webapp-0.2
.2.tgz' },
  directories: {} }

你能发布一下你的程序版本吗?grunt --version grunt-cli v0.1.8 grunt v0.4.1yo --version 1.0.0-beta.5bower --version 0.9.2npm view generator-webapp version 0.2.2 - Sheena Artrip
我遇到了完全相同的问题。grunt-cli v0.1.9,grunt v0.4.1,yo - 1.0.0-beta.6,bower -0.9.2,generator-webapp@0.2.2 - Shazboticus S Shazbot
今天卸载了所有东西,重新尝试安装,没有遇到任何问题。不知道区别在哪里。唯一不同的是我使用了mysysGit(msysGit-netinstall-1.8.1.2-preview20130201.exe),而不是git-scm。不知道这是否有用。 - Shazboticus S Shazbot
@SheenaArtrip 我已经在我的帖子中编辑了版本信息。 - norbert
@ShazboticusSShazbot 你卸载了choclatey里的所有东西吗? - norbert
显示剩余2条评论
9个回答

12

我遇到了类似的问题,正尝试排除故障时发现了这篇文章。我在Yeoman项目的已关闭GitHub问题中找到了线索,终于解决了这个问题。

对我来说,解决方案是删除我的~/.bower目录(Mac),然后在我的项目主目录中再次运行bower install。一旦我这样做了,我发现bower_components目录位于它应该在的地方,并且样例项目按预期运行。不过,看起来你正在使用Windows机器,我不确定Bower目录在哪里,但如果你能找到它,请尝试这个方法。


1
我尝试在一个干净的文件夹中执行以下操作:1. yo webapp,2. npm uninstall bower(控制台告诉我它没有安装),3. npm install bower,4. grunt。结果和之前一样 - 警告:C: /Dysk Google/Sublime/Norbert/motocycle/app/bower_components的第33行出现Errno :: ENOENT错误 - 没有这样的文件或目录。 - norbert
我也遇到了同样的问题,不过我是在Linux Mint上。 - imwill
1
谢谢!同时在不删除文件夹的情况下运行 bower install 也起作用了 :) - Nikos Baxevanis

10

其实比那复杂得多。问题不在于Bower或Grunt-Karma,而是出现在那之前。你需要使用Git来安装这些组件。在某个程度上,Node包管理器(npm)会处理所有事情。但某些东西需要Git。

因此,如果你使用的是Windows,并且还没有安装Git,或者尝试通过cmd shell运行它。如果你已经安装了Git,请通过Git Bash运行Yeoman,否则可以按照以下步骤设置从cmd shell运行:

  • 开始菜单 > 右键点击计算机 > 属性
  • 在左侧,转到高级系统设置 > 环境变量

在这里,在系统变量下滚动并找到Path。单击编辑...并输入Git Bash的路径。在原有路径前面加上一个分号很重要,以将它们分开。也不需要引号或实际的sh.exe。应该看起来像这样:

C:\Ruby193\bin;%SystemRoot%\system32;C:\Program Files\nodejs\;C:\Program Files (x86)\Git\bin\

你可以看到,首先是Ruby,然后是system32,接着是nodejs,最后是git。这只是你可能会看到的一部分内容,请不要更改任何内容,只需在末尾添加git即可。

为了测试是否成功,在命令提示符中键入git并按Enter。如果返回“未识别的git”,则表示未成功。如果返回git的一些内容,则说明准备就绪。从现在开始,Yeoman将可以通过cmd正常运行。


我一直在使用git和系统变量,所以它不可能是问题的原因 :< - norbert
是的,我的问题通过上述方法得到了解决,但在阅读了generator-karma和generator-angular的git问题后,发现有些情况下需要运行yo generator-angular && generator-karma,因为karma默认情况下没有被安装。更新已经修复了这个问题,可以使用npm update generator-angular -g或者你正在使用的任何生成器。 - Luke Watts
我正在使用Ubuntu,刚刚进行了一次全新的安装,忘记下载git了,这是我的问题所在。谢谢。 - Craicerjack

4

好的,我已经完成了翻译。只有按照以下步骤进行操作时,此功能才能正常工作:

  1. 运行“yo backbone”命令
  2. 运行“grunt”命令
  3. 运行“bower cache clean”命令
  4. 删除由“yo backbone”命令创建的所有项目文件
  5. 重新运行“yo backbone”命令
  6. 再次运行“grunt”命令
  7. 运行“grunt server”命令

我知道这看起来有点奇怪,但我必须按照这个步骤进行操作才能成功。


3

我将项目迁移到另一个文件夹时遇到了这个问题。只需要将.bowerrc从旧项目文件夹移动到新的文件夹即可。

孩子们,不要忘记你们的隐藏文件!它们不会自己搬家。


1
我通常会为Yeoman应用程序编写启动脚本,类似于以下内容:

start.sh:

mkdir ~/projectdir/app/bower_components

cd ~/projectdir/app/

sudo apt-get install ruby           &&
sudo gem install sass compass       &&
npm install                         &&
sudo npm install -g grunt-cli       &&
sudo npm install -g bower           &&
grunt

1
我尝试将一个项目迁移到Windows时遇到了这个问题。我完全不知道该如何安装Ruby、Git、Compass、Yeoman,更别提记得要运行npm install了。在我安装好所有东西后,我仍然遇到了上面的错误。我删除了项目文件夹并从Git中重新下载了它,重新开始。最后,我的问题是在确保所有依赖关系都已解决之前尝试运行服务器。运行以下命令:npm installbower installgrunt serve,问题得以解决。

0

我遇到了同样的问题,我的情况的根本原因是在使用yo angular命令构建项目结构时,有一步是选择angular库,我选择了其中四个。但是在过程中,在安装angular-sanitize 1.2.0期间发生了错误。

bower angular-sanitize#~1.2.0        ENOTFOUND Request to https://bower.herokuapp.com/packages/angular-sanitize failed: getaddrinfo ENOTFOUND

当我取消勾选Angular Sanitize时,一切都正常工作。 希望这能帮到你!


0

它正在寻找位于app/bower_components的bower_components。如果您的bower_components目录存在,请确保您的grunt配置正在寻找正确的路径。


0

刚刚使用 Yeoman Teams Backbone Generator 时遇到了同样的问题,找到了这里

我解决它的方法很简单...

yo backbone:appName

bower install

由于某种原因,生成器没有安装 bower_components,因此手动运行命令解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接