ember-cli / ember-router-generator

12 stars 21 forks source link

Cannot generate routes with classic decorator #167

Open jrock2004 opened 4 years ago

jrock2004 commented 4 years ago

I am trying to generate a route ember g route location/account/add and I am getting errors and only the template and template.js gets generated.

ERROR Summary:
  - stack: Error: Line 5: Unexpected token ILLEGAL
    at ErrorHandler.constructError (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:3396:22)
    at ErrorHandler.createError (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:3414:27)
    at ErrorHandler.throwError (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:3422:21)
    at Scanner.throwUnexpectedToken (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:3505:28)
    at Scanner.scanPunctuator (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:4026:19)
    at Scanner.lex (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:4628:22)
    at JSXParser.Parser.nextToken (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:634:30)
    at JSXParser.Parser.consumeSemicolon (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:841:19)
    at JSXParser.Parser.parseImportDeclaration (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:3180:15)
    at JSXParser.Parser.parseStatementListItem (/Users/john/Development/my-app/node_modules/ember-router-generator/node_modules/esprima/dist/esprima.js:1803:39)

image

import classic from 'ember-classic-decorator';
import EmberRouter from '@ember/routing/router';
import config from './config/environment';

@classic
class Router extends EmberRouter {
  location = config.locationType;
  rootURL = config.rootURL;

  didTransition() {
    super.didTransition(...arguments);

    if (window.ga && typeof window.ga === 'function') {
      // my code
    }
  }
}

Router.map(function() {});

export default Router

Output from ember version --verbose && npm --version && yarn --version:

Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
ember-cli: 3.12.0
http_parser: 2.9.3
node: 10.20.1
v8: 6.8.275.32-node.56
uv: 1.34.2
zlib: 1.2.11
brotli: 1.0.7
ares: 1.15.0
modules: 64
nghttp2: 1.39.2
napi: 6
openssl: 1.1.1e
icu: 64.2
unicode: 12.1
cldr: 35.1
tz: 2019c
os: darwin x64
6.14.4
1.22.4

Ember version is 3.12 as well

MariannaAtPlay commented 4 years ago

Ran into the same issue. We are also on 3.12. We thought it might also be because we migrated to using JS native class syntax prematurely. Is there any workaround?

jrock2004 commented 4 years ago

I have not found a solution. Waiting for next upgrade to see if it goes away

rwjblue commented 4 years ago

The issue is in https://github.com/ember-cli/ember-router-generator, it needs to be updated to understand how to parse decorators.

rwjblue commented 4 years ago

We are using something like:

var recast = require('recast');
var parser = require('recast/parsers/babel');

recast.parse(someFileContents, { parser });

And I think we need to set more options to enable decorator parsing there.

rwjblue commented 4 years ago

(transferred the issue to ember-cli/ember-router-generator)