CleverStack / clever-auth

CleverStack Authentication Module
cleverstack.io
MIT License
18 stars 4 forks source link

Clever serve error #20

Open marco-gallinari opened 9 years ago

marco-gallinari commented 9 years ago

Empty app, installed today.

Modules installed: odm, auth, auth-google, roles, accounts (missing users module that still has errors).

Clever serve results in the following recurrent error:

⇒  clever serve 
Running "concurrent:servers" (concurrent) task
Running "clean:server" (clean) task

Running "connect:livereload" (connect) task
Started connect web server on 0.0.0.0:9000.

Running "connect:dist" (connect) task
Started connect web server on 0.0.0.0:9009.

Running "concurrent:watch" (concurrent) task
Running "nodemon:cluster" (nodemon) task
Running "watch:schema" (watch) task
Waiting...
[nodemon] v1.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node cluster.js`
Running "watch:less" (watch) task
Waiting...Running "watch:livereload" (watch) task
Waiting.../home/marco/clever/memyne_clever/backend/node_modules/connect-redis/lib/connect-redis.js:33
  var Store = connect.session.Store;
                             ^
TypeError: Cannot read property 'Store' of undefined
    at module.exports (/home/marco/clever/memyne_clever/backend/node_modules/connect-redis/lib/connect-redis.js:33:30)
    at Class.Module.extend.setupRedisSessionStore (/home/marco/clever/memyne_clever/backend/modules/clever-auth/module.js:27:54)
    at Class.Module.extend.preSetup (/home/marco/clever/memyne_clever/backend/modules/clever-auth/module.js:17:12)
    at Class.module.exports.Class.extend.hook (/home/marco/clever/memyne_clever/backend/lib/classes/Module.js:387:23)
    at Class.module.exports.Class.extend.setup (/home/marco/clever/memyne_clever/backend/lib/classes/Module.js:190:10)
    at Class.addTo.(anonymous function) [as setup] (/home/marco/clever/memyne_clever/backend/node_modules/uberclass/lib/class.js:35:14)
    at Function.extend.newInstance (/home/marco/clever/memyne_clever/backend/node_modules/uberclass/lib/class.js:110:23)
    at class_cb (/home/marco/clever/memyne_clever/backend/node_modules/uberclass/lib/class.js:94:43)
    at Function.module.exports.Class.extend.extend (/home/marco/clever/memyne_clever/backend/lib/classes/Module.js:121:49)
    at Function.addTo.(anonymous function) (/home/marco/clever/memyne_clever/backend/node_modules/uberclass/lib/class.js:35:14)
    at Object.<anonymous> (/home/marco/clever/memyne_clever/backend/modules/clever-auth/module.js:7:31)
    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)
pilsy commented 9 years ago

Can you remove the auth-google module (as it's bundled in clever-auth base now anyway) and try with the ORM Module instead? - just trying to isolate the problem

marco-gallinari commented 9 years ago

Could this issue be related to module dependencies and install order?

Here's what i've done. Sorry for the extremely long message.

  1. ensure latest cli version (npm view cleverstack-cli reads version 1.2.2) and clever init a new app (namely test, done twice because of a ENOENT error as in issue #53 of cleverstack-cli)
  2. clever install clever-orm configured as LOCAL mysql localhost
  3. clever install clever-auth configured as LOCAL ORM session on localhost redis, prefix and key "test"
  4. clever serve -> complains about missing UserService factory (should be normal?)
  5. clever install clever-users -> error as in issue 1 of clever-users (undefined is not a function). Trying "grunt db" manually, complains about missing AccountController factory
  6. clever-install clever-roles clever-accounts
  7. grunt db again, and got:
⇒  grunt db
Running "exec:ormRebase" (exec) task
>> Using 2 x hasMany to represent N:M relations has been deprecated. Please use belongsToMany instead
Executing ... omitted sql statements for brevity...

Running "exec:ormSeed" (exec) task
>> Using 2 x hasMany to represent N:M relations has been deprecated. Please use belongsToMany instead
>> undefined
>> TypeError: undefined is not a function
>>     at Object.SqlString.dateToString (/home/marco/clever/test/backend/node_modules/sequelize/lib/sql-string.js:167:23)
>>     at Object.SqlString.escape (/home/marco/clever/test/backend/node_modules/sequelize/lib/sql-string.js:65:21)
>>     at Object.module.exports.QueryGenerator.escape (/home/marco/clever/test/backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js:764:26)
>>     at Object.module.exports.QueryGenerator.insertQuery (/home/marco/clever/test/backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js:246:30)
>>     at module.exports.QueryInterface.insert (/home/marco/clever/test/backend/node_modules/sequelize/lib/query-interface.js:492:35)
>>     at null.<anonymous> (/home/marco/clever/test/backend/node_modules/sequelize/lib/instance.js:604:43)
>>     at Promise._settlePromiseAt (/home/marco/clever/test/backend/node_modules/sequelize/lib/promise.js:76:18)
>>     at process._tickCallback (node.js:355:11)
>> From previous event:
>>     at Function.createModel (/home/marco/clever/test/backend/lib/utils/model/create.js:27:10)
>>     at createModel (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:43:20)
>>     at iterate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:149:13)
>>     at Object.async.eachSeries (/home/marco/clever/test/backend/node_modules/async/lib/async.js:165:9)
>>     at forEachSeedDataModel (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:34:19)
>>     at iterate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:149:13)
>>     at Object.async.eachSeries (/home/marco/clever/test/backend/node_modules/async/lib/async.js:165:9)
>>     at createModels (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:24:15)
>>     at fn (/home/marco/clever/test/backend/node_modules/async/lib/async.js:641:34)
>>     at Immediate._onImmediate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:557:34)
>>     at processImmediate [as _immediateCallback] (timers.js:358:17)
>> [TypeError: undefined is not a function]
>> Exited with code: 1.
Warning: Task "exec:ormSeed" failed. Use --force to continue.

At this point, if I run clever serve, no error shows in console.

Anyway, if I try to register, an error 500 is thrown, response shows the same error:

{
    "statusCode": 500,
    "message": "undefined is not a function",
    "stack": [
        "TypeError: undefined is not a function",
        "    at Object.SqlString.dateToString (./node_modules/sequelize/lib/sql-string.js:167:23)",
        "    at Object.SqlString.escape (./node_modules/sequelize/lib/sql-string.js:65:21)",
        "    at Object.module.exports.QueryGenerator.escape (./node_modules/sequelize/lib/dialects/abstract/query-generator.js:764:26)",
        "    at Object.module.exports.QueryGenerator.insertQuery (./node_modules/sequelize/lib/dialects/abstract/query-generator.js:246:30)",
        "    at module.exports.QueryInterface.insert (./node_modules/sequelize/lib/query-interface.js:492:35)",
        "    at null.<anonymous> (./node_modules/sequelize/lib/instance.js:604:43)",
        "    at Promise._settlePromiseAt (./node_modules/sequelize/lib/promise.js:76:18)",
        "    at process._tickCallback (node.js:355:11)",
        "From previous event:",
        "    at Function.createModel (./lib/utils/model/create.js:27:10)",
        "    at create (./lib/classes/Service.js:79:10)",
        "From previous event:",
        "    at Class.extend.create (./lib/classes/Service.js:67:12)",
        "    at createAccount (./modules/clever-accounts/services/AccountService.js:42:18)",
        "    at fn (./node_modules/async/lib/async.js:641:34)",
        "    at Immediate._onImmediate (./node_modules/async/lib/async.js:557:34)",
        "    at processImmediate [as _immediateCallback] (timers.js:358:17)"
    ]
}
marco-gallinari commented 9 years ago

and here is the output for grunt db -v:

Running "exec:ormSeed" (exec) task
Verifying property exec.ormSeed exists in config...OK
File: [no files]

node modules/clever-orm/bin/seedModels.js null
Expecting exit code 0
>> Using 2 x hasMany to represent N:M relations has been deprecated. Please use belongsToMany instead
>> undefined
>> TypeError: undefined is not a function
>>     at Object.SqlString.dateToString (/home/marco/clever/test/backend/node_modules/sequelize/lib/sql-string.js:167:23)
>>     at Object.SqlString.escape (/home/marco/clever/test/backend/node_modules/sequelize/lib/sql-string.js:65:21)
>>     at Object.module.exports.QueryGenerator.escape (/home/marco/clever/test/backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js:764:26)
>>     at Object.module.exports.QueryGenerator.insertQuery (/home/marco/clever/test/backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js:246:30)
>>     at module.exports.QueryInterface.insert (/home/marco/clever/test/backend/node_modules/sequelize/lib/query-interface.js:492:35)
>>     at null.<anonymous> (/home/marco/clever/test/backend/node_modules/sequelize/lib/instance.js:604:43)
>>     at Promise._settlePromiseAt (/home/marco/clever/test/backend/node_modules/sequelize/lib/promise.js:76:18)
>>     at process._tickCallback (node.js:355:11)
>> From previous event:
>>     at Function.createModel (/home/marco/clever/test/backend/lib/utils/model/create.js:27:10)
>>     at createModel (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:43:20)
>>     at iterate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:149:13)
>>     at Object.async.eachSeries (/home/marco/clever/test/backend/node_modules/async/lib/async.js:165:9)
>>     at forEachSeedDataModel (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:34:19)
>>     at iterate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:149:13)
>>     at Object.async.eachSeries (/home/marco/clever/test/backend/node_modules/async/lib/async.js:165:9)
>>     at createModels (/home/marco/clever/test/backend/modules/clever-orm/bin/seedModels.js:24:15)
>>     at fn (/home/marco/clever/test/backend/node_modules/async/lib/async.js:641:34)
>>     at Immediate._onImmediate (/home/marco/clever/test/backend/node_modules/async/lib/async.js:557:34)
>>     at processImmediate [as _immediateCallback] (timers.js:358:17)
>> [TypeError: undefined is not a function]
>> Exited with code: 1.
Warning: Task "exec:ormSeed" failed. Use --force to continue.
marco-gallinari commented 9 years ago

I've taken similar steps for ODM, only thing I've added default.json contents into local.json and change ORM to ODM.

In this case, a different error is shown:

Running "exec:odmRebase" (exec) task
[D] Task source: /home/marco/clever/test_2/backend/node_modules/grunt-exec/tasks/exec.js
Verifying property exec.odmRebase exists in config...OK
File: [no files]

node modules/clever-odm/bin/rebase.js null
Expecting exit code 0
>> /home/marco/clever/test_2/backend/modules/clever-odm/module.js:85
>>         odmUtils[ assocType ](mongoose, Klass, Proto, assocTo);
>>                              ^
>> TypeError: undefined is not a function
>>     at Class.module.exports.Module.extend.associateModels (/home/marco/clever/test_2/backend/modules/clever-odm/module.js:85:30)
>>     at class_cb (/home/marco/clever/test_2/backend/node_modules/uberclass/lib/class.js:94:43)
>>     at Array.forEach (native)
>>     at Class.module.exports.Module.extend.defineModelAssociations (/home/marco/clever/test_2/backend/modules/clever-odm/module.js:66:20)
>>     at class_cb (/home/marco/clever/test_2/backend/node_modules/uberclass/lib/class.js:94:43)
>>     at Array.forEach (native)
>>     at Class.module.exports.Module.extend.parseModelSchema (/home/marco/clever/test_2/backend/modules/clever-odm/module.js:113:69)
>>     at Function.defineModelFields (/home/marco/clever/test_2/backend/lib/utils/model/helpers/defineFields.js:24:31)
>>     at Function.extendModel (/home/marco/clever/test_2/backend/lib/utils/model/extend.js:40:36)
>>     at Function.addTo.(anonymous function) (/home/marco/clever/test_2/backend/node_modules/uberclass/lib/class.js:35:14)
>>     at new module.exports (/home/marco/clever/test_2/backend/modules/clever-accounts/models/AccountModel.js:2:16)
>>     at Ctor (/home/marco/clever/test_2/backend/node_modules/clever-injector/injector.js:16:24)
>>     at construct (/home/marco/clever/test_2/backend/node_modules/clever-injector/injector.js:19:10)
>>     at /home/marco/clever/test_2/backend/node_modules/clever-injector/injector.js:140:13
>>     at /home/marco/clever/test_2/backend/node_modules/async/lib/async.js:254:17
>>     at done (/home/marco/clever/test_2/backend/node_modules/async/lib/async.js:135:19)
>> Exited with code: 1.