【发布时间】: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