如何解决满足预期参数 accessToken 错误
我在下面的单独项目中创建了一个内容丰富的博客,并希望将我的博客添加到我的主项目中的 blog.js 页面。我在 .env 文件中发送了我的环境变量,我的访问令牌在 github 上公开,我的 gitignore 文件中从未出现过这个问题。不确定我是否必须在 Windows 10 中更改设置环境变量。
我还有“dotenv”:“^8.2.0”和“config”:“^3.3.2”,作为我的用户和个人资料的迷你社交网络的依赖项。不确定是否必须添加 require('dotenv').config();到 client.js。
.gitignore file:
.env
node_modules/
config/default.json
.env.development
client.js 文件:
import * as contentful from "contentful";
export const client = contentful.createClient({
space: process.env.REACT_APP_SPACE_ID,accessToken: process.env.REACT_APP_SPACE_TOKEN,});
.env
REACT_APP_SPACE_ID=my access key
REACT_APP_SPACE_TOKEN=my access token
控制台错误:
创建客户端
56 | */
57 | function createClient(params) {
58 | if (!params.accessToken) {
> 59 | throw new TypeError('Expected parameter accessToken');
60 | }
61 |
62 | if (!params.space) {
我的 mongoDB 也有一个配置文件,我不确定这是否设置了我的 Contentful accesstoken
配置/db.js
const mongoose = require('mongoose');
const config = require('config');
const db = config.get('mongoURI');
const connectDB = async () => {
try{
await mongoose.connect(db,{
useNewUrlParser: true,useUnifiedTopology: true,useCreateIndex: true,useFindAndModify: false
});
console.log('MongoDB Connected...');
} catch(err){
console.error(err.message);
// exit process with failure
process.exit(1);
}
};
// db.js
module.exports = connectDB;
刚刚添加了我的 .env 文件路径以通过路径使用
server.js
const express = require('express');
const connectDB = require('./config/db');
const app = express();
// Connect Database
connectDB();
// Init Middleware
app.use(express.json({ extended: false }));
app.get('/',(req,res) => res.send('API Running'));
//DEfine Routes
app.use('/api/users',require('./routes/api/users'));
app.use('/api/auth',require('./routes/api/auth'));
app.use('/api/profile',require('./routes/api/profile'));
app.use('/api/posts',require('./routes/api/posts'));
const PORT = process.env.PORT || 5000;
app.listen(PORT,() => console.log(`Server started on port ${PORT}`));
//server.js
解决方法
要解决这个问题,您必须在内容博客的正确路径中添加环境变量,您必须将其放置在 .env.development 中。
.env.development
<input id="input">
如果您将 .env.development 放在项目之外,则可能会暴露您的令牌。如果你放置 console.log(process.env);在您要测试的区域。每次测试 console.log 时,请务必通过在终端中放置 npm start 来重新启动服务器进行测试。
client\src\client.js
REACT_APP_SPACE_ID=my access key
REACT_APP_SPACE_TOKEN=my access token
如果你把环境变量放在错误的区域,你会收到一个 undefined
import * as contentful from "contentful";
console.log(process.env);
export const client = contentful.createClient({
space: process.env.REACT_APP_SPACE_ID,accessToken: process.env.REACT_APP_SPACE_TOKEN,});
如果您在适当的区域测试您的 .env.development 文件,您将看到您的访问密钥和访问令牌将显示在控制台中。
Object
FAST_REFRESH: true
NODE_ENV: "development"
PUBLIC_URL: ""
WDS_SOCKET_HOST: undefined
WDS_SOCKET_PATH: undefined
WDS_SOCKET_PORT: undefined
__proto__: Object
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。