运行时,脚本抛出找不到模块'dotenv'



加载.env文件以将env值传递给Cyprus根文件夹中的getToken.js脚本时,抛出找不到模块"dotenv"错误。我已经安装了npm install dotenv。有人能告诉我这里缺了什么吗?.env文件在柏树根文件夹中可用。

环境: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();
});

软件包.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' ]

您应该检查是否安装了dotenv,否则键入terminal:

npm install --save dotenv 

或dotenv扩展

npm install --save dotenv-extended 

出现此问题的原因是您必须在tsconfig.json中的'compilerOptions'下添加'moduleSolution'值'node'。有了这个,一切都会好起来的!:(换句话说:

tsconfig.json:

{
"compilerOptions": {
"moduleResolution": "node",     // add this line.
...
},
...

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

npm install dotenv

即使必须安装dotenv,也要尝试重新安装。

只是在这里为那些可能需要的人抛出另一个答案。

在我的例子中,这是因为.env文件和我的入口点文件不在同一个文件夹中。

我的入口点是src/index.js,我的.env文件在src之外。一旦我把.env移到同一个目录,我就不再有这个问题了。

我遇到了同样的错误,在我的情况下,为了在https://www.cyclic.sh/看起来是这样的:

"scripts": {
"test": "mocha tests/unit/",
"dev": "nodemon src/index.ts",
"start": "node src/index.ts"
},

我更正的功能

"start": "node src/index.ts"  to "start": "nodemon src/index.ts"

问题就解决了!

最新更新