I am experimenting with FeathersJS. To do so, I generated a new feathers app
$ feathers g app
with the following configuration:
? Do you want to use JavaScript or TypeScript? JavaScript
? Project name test
? Description
? What folder should the source files live in? src
? Which package manager are you using (has to be installed globally)? npm
? What type of API are you making? REST, Realtime via Socket.io
? Which testing framework do you prefer? Mocha + assert
? This app uses authentication Yes
? Which coding style do you want to use? ESLint
? What authentication strategies do you want to use? (See API docs for all 180+ supported oAuth providers) Username + Password (Local)
? What is the name of the user (entity) service? users
? What kind of service is it? Objection
? Which database are you connecting to? SQLite
? What is the database connection string? sqlite://test.sqlite
When I run the test suite $ npm run tests
, it throws an error ERR GeneralError: strict mode: unknown keyword: "0"
So far, I understood that this error is raised somewhere in AJV that is used by Knex and that it is somehow related to schema validation. I also tried posting to http://localhost:3030/users
in order to create a users but I get the same error.
I ran the same experiment with apps configured to use Knex + SQLite and Sequalize + SQLite. Those setups let me create new users.
Does anyone have any idea where this error may come from and how to solve it?
Found the problem. The feathers generator creates the following jsonSchema within the ObjectionJS model:
static get jsonSchema() {
return {
type: 'object',
required: ['password'],
properties: {
email: { type: ['string', 'null'] },
password: 'string',
}
};
}
which features a wrong syntax for the password property. It needs to be password: { type: 'string' }
to work.