(generator-polymer) yo polymer 失败,找不到模块 'find-index'

(generator-polymer) yo polymer fails, cannot find module 'find-index'

这是在干净的目录中键入 yo polymer 后的完整错误。

module.js:338
    throw err;
          ^
Error: Cannot find module 'find-index'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/usr/lib/node_modules/generator-polymer/node_modules/yeoman-generator/node_modules/download/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/index.js:4:17)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)

我刚刚重新安装了与节点相关的所有内容,但这里是版本。

node:              v0.12.7
npm:               2.11.3
yo:                1.4.7
bower:             1.4.1
grunt-cli:         v0.1.13
gulp:              3.9.0
generator-polymer: 1.0.5

请注意,我在安装 generator-polymer 时收到警告。

npm WARN deprecated CSSselect@0.4.1: the module is now available as 'css-select'
npm WARN deprecated CSSwhat@0.4.7: the module is now available as 'css-what'

我也尝试过手动安装这三个有问题的模块,似乎是成功的。

sudo npm install -g find-index css-select css-what

我没主意了。 Node 是从 nodejs.org.

下载的源代码安装的

编辑: 我还使用 sudo npm install -g n 安装了 n 来安装节点。我试过 uninstalling/reinstalling node/npm 但没有成功。

编辑2: yo webapp 有效,所以罪魁祸首是(一定是?)生成聚合物。

我看到你正在将它安装到全局模块。您是否尝试为项目安装 generator-polymer(它应该修复警告)

您只列出根包版本。但问题似乎在于依赖性。根据你的堆栈跟踪,它是由 yeoman-generator / 下载模块引起的

这是我所有 depes 的版本。查看这个包并检查你的版本(我有 yeoman-generator@0.18.10 和 download@3.3.0 可以正常工作)

generator-polymer@1.1.0 node_modules/generator-polymer
├── ncp@2.0.0
├── chalk@1.1.0 (escape-string-regexp@1.0.3, supports-color@2.0.0, ansi-styles@2.1.0, has-ansi@2.0.0, strip-ansi@3.0.0)
├── lodash@3.10.1
├── validate-element-name@1.0.0 (log-symbols@1.0.2, ncname@1.0.0)
├── rimraf@2.4.2 (glob@5.0.14)
├── yosay@1.0.5 (ansi-regex@1.1.1, ansi-styles@2.1.0, strip-ansi@2.0.1, word-wrap@1.1.0, pad-component@0.0.1, minimist@1.1.3, taketalk@1.0.0, repeating@1.1.3, string-width@1.0.1)
└── yeoman-generator@0.18.10 (read-chunk@1.0.1, dargs@3.0.1, detect-conflict@1.0.0, yeoman-welcome@1.0.1, xdg-basedir@1.0.1, user-home@1.1.1, class-extend@0.1.1, diff@1.4.0, text-table@0.2.0, mime@1.3.4, underscore.string@2.4.0, async@0.9.2, run-async@0.1.0, istextorbinary@1.0.2, debug@2.2.0, nopt@3.0.3, cross-spawn@0.2.9, yeoman-assert@1.0.0, mkdirp@0.5.1, shelljs@0.3.0, cli-table@0.3.1, pretty-bytes@1.0.4, through2@0.6.5, glob@4.5.3, findup-sync@0.2.1, file-utils@0.2.2, dateformat@1.0.11, github-username@1.1.1, lodash@2.4.2, gruntfile-editor@0.2.0, download@3.3.0, mem-fs-editor@1.2.3, sinon@1.15.4, inquirer@0.8.5, yeoman-environment@1.2.7, cheerio@0.18.0)

无论如何,我会尝试将所有 deps 安装为本地模块。

编辑: 你应该在你的项目中有这个目录

node_modules/generator-polymer/node_modules/yeoman-generator/node_modules/download/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/node_modules/find-index

在树的哪个位置 glob2base 是 0.0.12 glob-stram 是 3.1.18 乙烯基-fs 是 0.3.13 下载是3.3.0 yeoman-generator 是 0.18.10

使用 npm -g 存在问题,除非您可以在不使用 sudo 的情况下访问它(即您有权在安装全局模块的地方使用 read/write 等)。

据我所知,它的凉亭是罪魁祸首

解决问题的方法是 运行 npm config edit,并将前缀值更改为无需 sudo 即可访问的值。这会编辑 ~/.npmrc 文件

然后你为你全局安装。

我能够通过删除有问题的目录来解决问题,

/usr/lib/node_modules/generator-polymer

我不记得是否简单地重新安装发电机聚合物 (sudo npm install -g generator-polymer) 就完全解决了问题(让我知道,我会更新答案)。我最终重新安装了所有内容以确保所有问题都得到缓解。

环境设置

  1. 安装node.js。按照他们网站上的说明为您的 OS.
  2. 安装
  3. 通过在系统的控制台中键入命令 sudo npm install -g yo 来安装 Yeoman-g 全局安装包,这就是为什么需要 sudo 命令(您的系统可能会有所不同)。
  4. 接下来我们将安装几个 Yeoman generators
    1. 使用命令 sudo npm install -g generator-polymer 安装 polymer generator
    2. (可选)使用命令 sudo npm install -g generator-element 安装 polymer element generator。 这将有助于构建自定义 Polymer 元素。

开始新项目

有了开发环境的设置,开始一个项目就变得非常容易了。

mkdir my-project
cd my-project
yo polymer

将使用最新版本的聚合物和其他依赖项在 my-project 目录中设置一个新的聚合物项目。

测试项目

Polymer 使用 gulp 流构建系统。在您的项目目录中,只需键入

gulp serve

查看我的 Polymer 1.0 Notes Google 文档。