krakenjs / hapi-openapi

Build design-driven apis with OpenAPI (formerly swagger) 2.0 and hapi.
Other
210 stars 75 forks source link

Quick Start Fails at {petId}... _.forEach(Object.keys(properties), function (prop) {; #43

Closed idkjs closed 8 years ago

idkjs commented 8 years ago
swaggerize-hapi klik npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (swaggerize-hapi)
version: (1.0.1)
keywords:
license: (MIT)
About to write to /Users/klik/github/swaggerize-hapi/package.json:

{
  "name": "swaggerize-hapi",
  "description": "Design-driven apis with swagger 2.0 and hapi.",
  "version": "1.0.1",
  "author": "Trevor Livingston <tlivings@gmail.com>",
  "repository": {
    "type": "git",
    "url": "git://github.com/krakenjs/swaggerize-hapi.git"
  },
  "bugs": {
    "url": "http://github.com/krakenjs/swaggerize-hapi/issues"
  },
  "publishConfig": {
    "registry": "https://registry.npmjs.org"
  },
  "engines": {
    "node": "~0.10.22"
  },
  "dependencies": {
    "core-util-is": "^1.0.1",
    "hapi": "^8.0.0",
    "hoek": "^2.6.0",
    "joi": "^6.6.1",
    "js-yaml": "^3.2.6",
    "swaggerize-routes": "^1.0.3"
  },
  "devDependencies": {
    "tape": "^3.0.0",
    "jshint": "^2.4.1",
    "istanbul": "~0.2.3",
    "boom": "~2.8.0"
  },
  "scripts": {
    "test": "tape test/*.js",
    "cover": "istanbul cover tape -- test/*.js",
    "lint": "jshint -c .jshintrc lib/*.js"
  },
  "main": "./lib/index",
  "homepage": "https://github.com/krakenjs/swaggerize-hapi#readme",
  "directories": {
    "test": "test"
  },
  "license": "MIT"
}

Is this ok? (yes)
swaggerize-hapi klik npm install
swaggerize-hapi@1.0.1 /Users/klik/github/swaggerize-hapi
├── boom@2.8.0
├── core-util-is@1.0.2
├─┬ hapi@8.8.1
│ ├── accept@1.0.0
│ ├── ammo@1.0.0
│ ├── boom@2.7.2
│ ├── call@2.0.1
│ ├── catbox@4.3.0
│ ├── catbox-memory@1.1.1
│ ├── cryptiles@2.0.4
│ ├─┬ h2o2@4.0.1
│ │ └── wreck@5.6.1
│ ├─┬ heavy@3.0.0
│ │ └── joi@5.1.0
│ ├── hoek@2.14.0
│ ├─┬ inert@2.1.6
│ │ └── lru-cache@2.6.5
│ ├── iron@2.1.2
│ ├── items@1.1.0
│ ├─┬ joi@6.4.1
│ │ ├── isemail@1.1.1
│ │ └── moment@2.10.3
│ ├── kilt@1.1.1
│ ├─┬ mimos@2.0.2
│ │ └── mime-db@1.14.0
│ ├── peekaboo@1.0.0
│ ├── qs@4.0.0
│ ├── shot@1.5.3
│ ├── statehood@2.1.1
│ ├─┬ subtext@1.1.1
│ │ ├── content@1.0.1
│ │ ├─┬ pez@1.0.0
│ │ │ ├── b64@2.0.0
│ │ │ └─┬ nigel@1.0.1
│ │ │   └── vise@1.0.0
│ │ └── wreck@6.0.0
│ ├── topo@1.0.3
│ └── vision@2.0.1
├── hoek@2.16.3
├─┬ istanbul@0.2.16
│ ├── abbrev@1.0.7
│ ├── async@0.9.2
│ ├─┬ escodegen@1.3.3
│ │ ├── esprima@1.1.1
│ │ ├── estraverse@1.5.1
│ │ ├── esutils@1.0.0
│ │ └─┬ source-map@0.1.43
│ │   └── amdefine@1.0.0
│ ├── esprima@1.2.5
│ ├─┬ fileset@0.1.8
│ │ └─┬ minimatch@0.4.0
│ │   ├── lru-cache@2.7.3
│ │   └── sigmund@1.0.1
│ ├─┬ handlebars@1.3.0
│ │ ├── optimist@0.3.7
│ │ └─┬ uglify-js@2.3.6
│ │   └── async@0.2.10
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├── nopt@3.0.6
│ ├── resolve@0.7.4
│ ├── which@1.0.9
│ └── wordwrap@0.0.3
├─┬ joi@6.10.1
│ ├── isemail@1.2.0
│ ├── moment@2.12.0
│ └── topo@1.1.0
├─┬ js-yaml@3.5.4
│ ├─┬ argparse@1.0.6
│ │ └── sprintf-js@1.0.3
│ └── esprima@2.7.2
├─┬ jshint@2.9.1
│ ├── cli@0.6.6
│ ├─┬ console-browserify@1.1.0
│ │ └── date-now@0.1.4
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.8.3
│ │ ├── domelementtype@1.3.0
│ │ ├── domhandler@2.3.0
│ │ ├─┬ domutils@1.5.1
│ │ │ └─┬ dom-serializer@0.1.0
│ │ │   ├── domelementtype@1.1.3
│ │ │   └── entities@1.1.1
│ │ ├── entities@1.0.0
│ │ └─┬ readable-stream@1.1.13
│ │   ├── isarray@0.0.1
│ │   └── string_decoder@0.10.31
│ ├── lodash@3.7.0
│ ├─┬ minimatch@2.0.10
│ │ └─┬ brace-expansion@1.1.3
│ │   ├── balanced-match@0.3.0
│ │   └── concat-map@0.0.1
│ ├── shelljs@0.3.0
│ └── strip-json-comments@1.0.4
├─┬ swaggerize-routes@1.0.6
│ ├── caller@1.0.1
│ ├── debuglog@1.0.1
│ ├── enjoi@1.0.2
│ └── swagger-schema-official@2.0.0-bab6bed
└─┬ tape@3.6.1
  ├── deep-equal@0.2.2
  ├── defined@0.0.0
  ├─┬ glob@3.2.11
  │ └── minimatch@0.3.0
  ├── inherits@2.0.1
  ├── object-inspect@0.4.0
  ├── resumer@0.0.0
  └── through@2.3.8

swaggerize-hapi klik mkdir petstore && cd $_
petstore klik yo swaggerize
Swaggerize Generator
? What would you like to call this project: petstore
? Your name: Alain
? Your github user name: kaona
? Your email: alain@klik.io
? Path (or URL) to swagger document: https://raw.githubusercontent.com/wordnik/s
wagger-spec/master/examples/v2.0/json/petstore.json
? Express, Hapi or Restify: Hapi
   create .jshintrc
   create .gitignore
   create .npmignore
   create server.js
   create package.json
   create README.md
   create config/petstore.json
   create handlers/pets.js
   create handlers/pets/{petId}.js
undefined:11
_.forEach(Object.keys(properties), function (prop) {;
                      ^

ReferenceError: properties is not defined
    at eval (eval at template (/usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/node_modules/lodash/dist/lodash.js:6306:22), <anonymous>:11:23)
    at underscore [as _engine] (/usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/lib/util/engines.js:32:30)
    at engine (/usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/lib/actions/actions.js:303:10)
    at template (/usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/lib/actions/actions.js:281:15)
    at /usr/local/lib/node_modules/generator-swaggerize/app/index.js:287:18
    at Array.forEach (native)
    at yeoman.generators.Base.extend.models (/usr/local/lib/node_modules/generator-swaggerize/app/index.js:276:49)
    at /usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/lib/base.js:341:43
    at /usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/node_modules/async/lib/async.js:551:21
    at /usr/local/lib/node_modules/generator-swaggerize/node_modules/yeoman-generator/node_modules/async/lib/async.js:227:13
petstore klik
Jiropole commented 8 years ago

Exactly following the Readme instructions with yo swaggerize using my own swagger.yaml document, I get the very same error as @kaona. In my case, this appears to happen immediately after processing the last path definition in the document, potentially at the time it would be parsing definitions. This swagger document is fully validated and tested working with swagger-ui and swagger.io.

tlivings commented 8 years ago

This bug belongs in generator-swaggerize. Closing here, opening there.