Developer FAQ
This page contains a list of common questions that new contributors might have when getting started, and hopefully provides useful answers.
This list is a work in progress, please feel free to add anything that new contributors might find useful.
Do I need to configure a local database for testing?
No, while the test command points to a local database, vly-test
, this is actually an in-memory database that is created during execution of the test script for the purpose
of running the tests. You don't need to do anything but run the test script by typing "npm run test
".
My module page works except when I force a reload.
App uses server side rendering, so when a forced reload is requested the page is fully rendered server side. Normally only the first page is rendered and others are loaded dynamically.
The difference is whether the page has requested data to be loaded into the store from the client side or the server side.
The first place to check for problems is in the routes.js file.
if (process.env.NODE_ENV !== 'production') { // Require async routes only in development for react-hot-reloader to work. require('./modules/Post/pages/PostListPage/PostListPage');
Make sure that you have required all your module pages that are liable to be reloaded from the browser. i.e pages rather than components.
You may see this type of warning
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. in PersonUpdatePage in Connect(PersonUpdatePage) in withRouter(Connect(PersonUpdatePage))
I'm on a Mac, and running 'mongod' seems to be erroring out?
The solution may be found here; the problem may be that you aren't pointing to an existing /data/db folder.
To do this, run the command as follows: 'mongod
--dbpath <absolute path to /data/db folder within vly1 repo>
' (E.g for me it was 'mongod
--dbpath ~/Documents/workspace/vly1/data/db/').
What is this Redux debug sidebar ?
This is included in client/store.js. and comes from client/modules/App/components/DevTools.js
There are mutiple tools in the dock
It shows a log of states and actions, and lets you change their history.
Getting "E11000 duplicate key" errors with MongoDB
This error can occur when you try and insert a record when an index field is "left over" that shouldn't be there. These can remain even if you update the Schema. You'll need to manually clear the offending index in your database (or just drop the database ). See this page for further details: https://stackoverflow.com/questions/23695676/mongoosejs-cant-disable-unique-to-field
AVA **/file no longer works
Ava - the test runner we use in npm test used to take glob wild cards like **/OpDetails.spec.js which would find the file in any folder. In the upgrade to v4 this was removed. Instead you have to specify a complete path to the target file.
On Mac and Linux you can use the back tick to generate the appropriate list of files into the command line
npm test `**/OpDetail*.spec` > @voluntarily/vly2@1.0.0 test /Users/watkinsav/workspace/voluntarily/vly2 > cross-env NODE_ENV=test PORT=8080 node_modules/.bin/nyc node --no-deprecation node_modules/ava/cli.js "components/Op/__tests__/OpDetail.spec.js" "components/Op/__tests__/OpDetailForm.spec.js" "components/Op/__tests__/OpDetailTagsEditable.spec.js"
Test cases using mongodb memory database timed-out without completing in Ubuntu 18.04 LTS
After a package update in 18.04. some ava tests were timed out and displyed a messafge like below.
ā Timed out while running tests 20 tests were pending in /home/hari/github_repo/voluntarily/backup/vly2/server/api/activity/tests/activity.spec.js
The issue was that default mongod library has some issues. So I have to remove it and installed the mongodb community version.
To remove mogodb follow these steps
sudo apt remove mongodb
sudo apt purge mongodb
sudo apt-get autoremove
Simulate onChange is not working when the component is rendered using Mount
The change event is not working with the antd Select component for some reason when the component is rendered using mount.
The quick fix was to render the component using shallow. The code below is an example to simulate a change event using shallow rendering.
const handleSort = sinon.fake((sortOrder) => t.is(sortOrder, 'name')) const wrapper = shallowWithIntl( <OpOrderBy onChange={handleSort} /> ) wrapper.find('Select').first().simulate('change', 'name')
Getting "' 'rm' is not recognized as an internal or external command" error when running npm test in Windows
The issue occurs when Windows doesn't recognize Linux commands in the command prompt.
The fix is to add the git bin folder location in the system environment variables→ environment variables→ path variable for the windows user. For details check the last answer https://stackoverflow.com/questions/49032646/ls-is-not-recognized-as-an-internal-or-external-command-operable-program-or-b