运行脚本时抛出找不到模块“dotenv”

soc*_*way 17 puppeteer cypress dotenv

在加载.env文件以将 env 值传递给getToken.jscypress 根文件夹中的脚本时,会抛出无法找到模块 'dotenv' 错误。我已经安装了npm install dotenv. 有人可以告诉我在这里缺少什么吗?.env文件位于 cypress 根文件夹中。

环境:Windows 10 > git bash /命令提示符

    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();
  });
Run Code Online (Sandbox Code Playgroud)

包.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"
Run Code Online (Sandbox Code Playgroud)
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' ]
Run Code Online (Sandbox Code Playgroud)

Dia*_*ana 33

您应该检查是否安装了 dotenv,否则在终端中输入:

npm install dotenv 
Run Code Online (Sandbox Code Playgroud)

或者

npm install --dotenv-extended 
Run Code Online (Sandbox Code Playgroud)

  • 我已经安装了“dotenv”。重新启动 IDE 后,该错误消失了。 (6认同)

Mar*_*ord 7

出现该问题的原因是您必须在“compilerOptions”下的 tsconfig.json 中添加“moduleResolution”值“node”。这样,一切都应该正常!:) 换句话说:

tsconfig.json:

{
  "compilerOptions": {
    "moduleResolution": "node",     // add this line.
   ...
  },
...
Run Code Online (Sandbox Code Playgroud)


小智 5

当我删除 package-lock.json 文件并创建一个新文件时,我也遇到了同样的问题。要修复此问题,请运行以下命令:

 npm install dotenv
Run Code Online (Sandbox Code Playgroud)

即使您必须安装 dotenv,也请尝试再次安装。