node.js - NodeJS .env-variabler (med dotenv) skickas inte för att ändras - cachelagrade?


Jag arbetar på ett KeystoneJS-projekt, som för närvarande körs i utvecklingsläge på NodeJS 12.14.0. För ungefär en vecka eller tio dagar sedan märkte jag att även om jag ändrade några miljövariabler i .env så återspeglades inte ändringarna vid körning. Jag har faktiskt varit tvungen att införa nya variabler för att ändringarna ska träda i kraft.

Jag har gjort sökningar (med WebStorm och VSC) i min kod efter den gamla informationen, men den dyker bara upp i mina debug-loggar. Det vill säga, om det gamla värdet på min miljövariabel ANIMAL var 'tupp' och jag har ändrat det till 'ödla', så dyker 'tupp' inte upp någonstans i min kod. Och ändå har ANIMAL fortfarande värdet tupp vid körning. Så att jag måste införa en ny variabel, NEW_ANIMAL=ödla, för att några ändringar ska fungera.

Detta händer inte med alla miljövariabler — till exempel, jag lade precis till en ny, TEST=1, körde appen, stoppade den, ändrade den till TEST=2, och ändringen fungerade bra. Jag ser inget mönster i vilka variabler som påverkas.

Jag startar projektet genom Keystones startskript, och jag använder TypeScript. Mitt startskript är

"dev": "tsc && cross-env NODE_ENV=development DISABLE_LOGGING=true  keystone --entry=tsout/index.js dev --port=4545"

dotenv laddas högst upp i projektets startpunkt, /index.ts,

require('dotenv').config();

som körs varje gång projektet startas om (för protokollet, jag använder Babel för att kunna använda import istället för require i hela projektet, men jag kan inte tänka mig att det spelar någon roll).

Jag tillbringade precis en halvtimme med en annan utvecklare här och gick igenom detta, och ingen av oss kunde lista ut det (egentligen försökte vi spåra en konstig bugg och det visade sig att det berodde på att även om .env-variabeln hade ändrats, läste appen fortfarande det gamla värdet).

Om någon någonsin har stött på något liknande tidigare -- eller har några ledtrådar om hur man kan lista ut det -- skulle jag vara mycket tacksam.

Jag inkluderar min package.json nedan. Jag kör MacOS 10.14.x och NodeJS 12.14.0, för vad det är värt.

{
  "name": "@keystonejs/example-projects-blank",
  "description": "A blank KeystoneJS starter project.",
  "private": true,
  "version": "5.0.0",
  "author": "The KeystoneJS Development Team",
  "repository": "https://github.com/keystonejs/keystone.git",
  "homepage": "https://github.com/keystonejs/keystone",
  "license": "MIT",
  "engines": {
    "node": ">=10.0.0"
  },
  "scripts": {
    "dev": "tsc && cross-env NODE_ENV=development DISABLE_LOGGING=true  keystone --entry=tsout/index.js dev --port=4545",
    "build": "cross-env NODE_ENV=production keystone build",
    "start": "cross-env NODE_ENV=production keystone start",
    "keystone": "keystone upgrade-relationships --index=tsout/index.js"
  },
  "dependencies": {
    "@apollo/react-hooks": "^3.1.5",
    "@arch-ui/fields": "^3.0.1",
    "@arch-ui/layout": "^0.2.13",
    "@arch-ui/typography": "^0.0.17",
    "@emotion/core": "^10.0.28",
    "@emotion/styled": "^10.0.27",
    "@keystonejs/adapter-mongoose": "^8.1.0",
    "@keystonejs/app-admin-ui": "^6.0.0",
    "@keystonejs/app-graphql": "^5.1.7",
    "@keystonejs/app-next": "^5.1.2",
    "@keystonejs/app-static": "^5.1.2",
    "@keystonejs/auth-password": "^5.1.7",
    "@keystonejs/field-content": "^6.0.0",
    "@keystonejs/fields": "^10.0.0",
    "@keystonejs/fields-markdown": "^5.1.10",
    "@keystonejs/fields-wysiwyg-tinymce": "^5.2.7",
    "@keystonejs/file-adapters": "^6.0.2",
    "@keystonejs/keystone": "^9.0.0",
    "@keystonejs/list-plugins": "^5.1.4",
    "@keystonejs/oembed-adapters": "^5.1.4",
    "@tinymce/tinymce-react": "^3.6.0",
    "@zeit/next-sass": "^1.0.1",
    "apollo-boost": "^0.4.8",
    "apollo-cache-inmemory": "^1.6.6",
    "apollo-client": "^2.6.9",
    "apollo-fetch": "^0.7.0",
    "apollo-link-http": "^1.5.17",
    "apollo-upload-client": "^13.0.0",
    "app-root-path": "^3.0.0",
    "axios": "^0.19.2",
    "connect-mongo": "^3.2.0",
    "cron": "^1.8.2",
    "cross-env": "^7.0.0",
    "date-fns": "^1.30.1",
    "disqus-react": "^1.0.7",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-fileupload": "^1.1.6",
    "express-session": "^1.17.1",
    "graphql": "^14.6.0",
    "graphql-tag": "^2.10.3",
    "isomorphic-unfetch": "^3.0.0",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.15",
    "loglevel": "^1.6.7",
    "moment": "^2.24.0",
    "multer": "^1.4.2",
    "next": "^9.3.6",
    "next-with-apollo": "^5.0.1",
    "node-cron": "^2.0.3",
    "node-fetch": "^2.6.0",
    "node-sass": "^4.14.1",
    "normalize-scss": "^7.0.1",
    "ramda": "^0.27.0",
    "react": "^16.13.1",
    "react-apollo": "^3.1.5",
    "react-dom": "^16.13.1",
    "reading-time": "^1.2.0",
    "require-directory": "^2.1.1",
    "sanitize-html": "^1.23.0",
    "string-strip-html": "^4.4.3",
    "ts-node": "^8.10.1",
    "typescript": "^3.8.3",
    "uuid": "^7.0.2",
    "validator": "^13.0.0",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "@babel/plugin-proposal-optional-chaining": "^7.9.0",
    "@types/express-fileupload": "^1.1.3",
    "@types/node": "^13.13.5",
    "@types/react": "^16.9.35",
    "@types/winston": "^2.4.4",
    "babel-cli": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "cz-conventional-changelog": "3.2.0",
    "eslint-plugin-react-hooks": "^4.0.0",
    "pino": "^6.2.1",
    "pino-pretty": "^4.0.0"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }
}

Relaterade artiklar