Getting Started: Setting Up a Local Dev Environment - and related bug fixes

getting-started
local-dev-environmen
npm

#1

Setting Up The Development Environment

  1. install meteor

https://www.meteor.com/install

  1. create a fork of this repository and then

    git clone https://github.com/your-github-username/fl-maps

  2. Set up git

    • git remote add upstream https://github.com/focallocal/fl-maps
      // make sure there are 2 remotes (origin that points to your fork and upstream for the original repo)
      git remote -v
    
    • every time you start working on a new feature, run: git pull upstream master which ensures you are always working with the most updated version of the project.

    • create a new branch git checkout -b new-feature-name

  3. obtain the most recent settings.json file from slack, its pinned in the #meteor-maps thread, and place it in the project’s folder

    • settings.json has a property named 'mapType': 'gatherings' ,
      you can change ‘gatherings’ to ‘btm’ to work on Focallocal or Brighter Tomorrow
  4. run the project

    meteor npm install
    npm run start // see notes below if it fails to run
    
  5. make changes

  6. run tests (npm test or npm run test-watch)

  7. if all the tests have passed, run

      git add .
      git commit -m 'description of what has changed'
      git push origin your_working_branch_name
    
  8. go to github and create a new pull request from your fork (make sure it’s against the fl-maps/master branch)

** !if you encounter any errors related to sass-loader, run the following command! **

meteor npm rebuild node-sass --force

Currently you’ll see a Compiled with warnings. message, ignore it.

** Step (5) Warnings **

For step (5) be sure you don’t run meteor npm install twice. Just do it once followed by npm run start and it will work.

Detailed Explanation If run twice you may get several warnings such as these:
npm WARN [email protected] requires a peer of [email protected] - 3 but none is installed. You must install peer dependencies yourself.
  npm WARN [email protected] requires a peer of @types/[email protected]^3.0.0 but none is installed. You must install peer dependencies yourself.
  npm WARN [email protected] requires a peer of @types/[email protected]^2.1.29 but none is installed. You must install peer dependencies yourself.
  npm WARN [email protected] requires a peer of @types/[email protected]^15.0.0 || ^16.0.0 but none is installed. You must install peer dependencies yourself.
  npm WARN [email protected] requires a peer of [email protected]>=0.8.2 <1.0.0 but none is installed. You must install peer dependencies yourself.
  npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
  npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

If you try to install them by:

meteor npm install jquery @types/[email protected]^3.0.0 @types/[email protected]^2.1.29 @types/[email protected]^16.0.0 [email protected]

… then during the npm run start step, compile will fail with errors such as these:

ERROR in ./imports/both/i18n/en/categories.json
Module parse failed: Unexpected token < in JSON at position 149
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token < in JSON at position 149
...

ERROR in chunk main [entry]
...
W20190111-19:03:18.261(8)? (STDERR)     ERROR in /home/sum/sum/job/remoteok/focallocal/fl-maps/node_modules/graphql/index.mjs
2:0-49 Can't reexport the named export 'graphql' from non EcmaScript module (only default export is available)
...
W20190111-19:03:18.272(8)? (STDERR)     2:0-49 Can't reexport the named export 'graphqlSync' from non EcmaScript module (only default export is available)
...
W20190111-19:03:18.292(8)? (STDERR)     39:0-61:50 Can't reexport the named export 'DEFAULT_DEPRECATION_REASON' from non EcmaScript module (only default export is available)
...
W20190111-19:03:18.300(8)? (STDERR)     39:0-61:50 Can't reexport the named export 'GraphQLBoolean' from non EcmaScript module (only default export is available)

** Updating Node & npm **

If you’ve tried the above, and things still aren’t working you may need to update your version of node & npm. First, check your version of node by running node -v, and take note of it. The current version of node as of writing this is 11.9.0.

To update node, install the package n, by running the command: npm install -g n. After the installation, run n latest. note: you may need to run sudo n latest, if on Mac or Linux.

Updating npm is quite simple, the command being: npm install -g npm.

After updating the packages, close your current terminal and open a new one, so that the changes may take effect. Confirm the update by typing node -v.


pinned #2