【问题标题】:NextJS environment variables undefined?NextJS 环境变量未定义?
【发布时间】:2021-03-13 17:18:16
【问题描述】:

我编写了一个脚本来将一些静态数据保存到我的文件系统中,如下所示

./lib/createLinks.js

const contentful = require('contentful')
const fs = require('fs')

require('dotenv').config({
  path: `.env.${process.env.NODE_ENV}`,
})

async function createLinks() {
  const client = contentful.createClient({
    space: process.env.NEXT_CONTENTFUL_SPACE_ID,
    accessToken: process.env.NEXT_CONTENTFUL_ACCESS_TOKEN,
  })

  const data = await client.getEntries({
    content_type: 'news',
  })

  fs.writeFile('./data/links.json', JSON.stringify(data), (err) => {
    if (err) throw err
    console.info('Global data written to file')
  })
}

async function main() {
  try {
    await createLinks()
  } catch (err) {
    throw new Error(err)
  }
}

main()

"create-links": "node ./lib/createLinks",
    "dev": "yarn create-links && next dev",
    "build": "yarn create-links && next build",

但是,当我尝试运行它时,我无法访问未定义的环境变量。

我的变量放在 .env.local 的根目录中

为什么会这样?

【问题讨论】:

  • 您的NODE_ENV 是否设置为local?如果不是 dotenv 将无法加载您的 .env.local 文件中的内容。
  • 不知道,这个怎么查?
  • 您可以通过控制台在createLinks.js 文件中记录process.env.NODE_ENV 变量。如果您没有明确设置它,那么它就没有值(除非其他东西设置了它的值)。
  • 我通过添加“dev”解决了这个问题:“NODE_ENV=local yarn create-links && next dev”。但是,如果我尝试在 netlify 上构建它,我不确定这会起作用吗?
  • 如果您有解决方案,请回答您自己的问题,这样可以帮助其他人。

标签: javascript next.js


【解决方案1】:

我通过将以下内容添加到我的 package.json 来解决它

"dev": "NODE_ENV=local yarn create-links && next dev",
"build": "NODE_ENV=local yarn create-links && next build",

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2021-09-13
    • 2021-01-26
    • 2021-11-26
    • 1970-01-01
    • 2021-01-04
    • 2022-10-03
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多