Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

While running the script throws cannot find module 'dotenv'

While loading the .env file to pass env values to the getToken.js script in the cypress root folder throws Cannot find module 'dotenv'error. I have installed npm install dotenv. Could someone please advise what I am missing here ? .env file is available in cypress root folder.

Environment : Windows 10 > git bash /command prompt

    const puppeteer = require("puppeteer");
    require('dotenv').config({path: '.env'})
    
    const baseURL = process.env.CYPRESS_BASE_URL
    const testsUser = process.env.CYPRESS_TESTS_USERNAME
puppeteer
  .launch({ headless: true, chromeWebSecurity: false, args: ['--no-sandbox'] })
  .then(async browser => {
    const page = await browser.newPage();
    await page.goto(`${baseURL}/login`);

    await page.waitFor(2000);
    await page.waitForSelector("input[name=username]");
    await page.type("input[name=username]", testsUser , {
      delay: 50
    });

    browser.close();
  });

package.json

"scripts": {
    "cy:run": "cypress run",
    "get-token-main": "node getToken.js && mv tokenData.json cypress/fixtures",
    "cy:open-qa": "npm run get-token-main && cypress open"
internal/modules/cjs/loader.js:797
    throw err;
    ^

Error: Cannot find module 'dotenv'
Require stack:
- /e2e/getToken.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15)
    at Function.Module._load (internal/modules/cjs/loader.js:687:27)
    at Module.require (internal/modules/cjs/loader.js:849:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/e2e/getToken.js:3:16)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
    at Module.load (internal/modules/cjs/loader.js:812:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/e2e/getToken.js' ]
like image 919
soccerway Avatar asked Apr 24 '20 11:04

soccerway


People also ask

How do you insert a dotenv?

To use DotEnv, first install it using the command: npm i dotenv . Then in your app, require and configure the package like this: require('dotenv'). config() .

What is the dotenv module?

Dotenv is a zero-dependency module that loads environment variables from a . env file into process. env . Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.


3 Answers

You should check if dotenv is installed, otherwise type in terminal:

npm install dotenv 

or

npm install --dotenv-extended 
like image 114
Diana Avatar answered Sep 20 '22 17:09

Diana


I was also facing the same problem when I delete the package-lock.json file and create a new one. To fix this run the following cmd:

 npm install dotenv

Try to install again even if you have to installed dotenv.

like image 30
Yajindra Gautam Avatar answered Sep 19 '22 17:09

Yajindra Gautam


Just throwing out another answer here for those that might need it.

In my case, it was because the .env file wasn't in same folder as my entry point file.

My entry point was src/index.js, and my .env file was outside of src. Once I moved .env to the same directory, I stopped having this issue.

like image 33
isaacsan 123 Avatar answered Sep 18 '22 17:09

isaacsan 123