reactjs - 在 React JS 文件之一中无法访问 process.env
问题描述
下面是我的客户端 React JS 代码的文件夹结构。我可以process.env
从account
,checkout
页面访问,但不能访问,chat
即使聊天与其他两个相比位于同一文件夹目录中。
|-- client
|-- src
|-- account
|-- account.js
|-- account.css
|-- checkout
|-- checkout.js
|-- checkout.css
|-- chat
|-- chat.js
|-- chat.css
更新 - 这是我的聊天组件
import "./chat.scss";
import { to_Decrypt, to_Encrypt } from "../../aes.js";
import { process } from "../../store/action/index";
import React, { useState, useEffect, useRef } from "react";
import ReactStars from 'react-stars';
import moment from 'moment';
import { render } from 'react-dom'
import { useDispatch } from "react-redux";
import axios from 'axios';
import { useHistory } from "react-router-dom";
import ratingImg from '../../public/review.png';
function Chat({ username, roomname, socket, serverURL }) {
const [text, setText] = useState("");
const [messages, setMessages] = useState([]);
const [review, setReview] = useState([]);
const [rating, setRating] = useState([]);
const [taskId, settaskId] = useState("");
const [userId, setuserId] = useState("");
const [isExpert, setisExpert] = useState(true);
const [isLoggedIn, setisLoggedIn] = useState(false);
const [isModelOpen, setisModelOpen] = useState(false);
const dispatch = useDispatch();
const question = localStorage.getItem('question');
let history = useHistory();
const dispatchProcess = (encrypt, msg, cipher) => {
dispatch(process(encrypt, msg, cipher));
};
useEffect(() => {
if(window.performance){
if(performance.navigation.type == 1){
console.log("This page is reloaded");
socket.emit("joinRoom", { username, roomname });
}
}
console.log(serverURL);
axios.get(`${process.env.REACT_APP_SERVER_URL}/users/isLoggedIn`, {
withCredentials: true,
headers: {
'Access-Control-Allow-Credentials' : true,
'Access-Control-Allow-Origin' : 'http://localhost:3000',
'Access-Control-Allow-Methods':'GET,PUT,POST,DELETE,PATCH,OPTIONS',
}
})
.then(function (response) {
console.log(response.data);
setuserId(response.data._id);
if(!response.data){
setisLoggedIn(false);
history.push('/');
}
else{
setisLoggedIn(true);
axios.get(`${process.env.REACT_APP_SERVER_URL}/tasks/room_details/${roomname}`)
.then(res => {
console.log(res.data);
settaskId(res.data.tasks[0]._id);
if(res.data.tasks[0].username === username){
setisExpert(false);
}
});
}
});
socket.on("message", (data) => {
//decypt
const ans = to_Decrypt(data.text, data.username);
dispatchProcess(false, ans, data.text);
console.log(ans);
let temp = messages;
temp.push({
userId: data.userId,
username: data.username,
text: ans,
});
setMessages([...temp]);
});
}, [socket]);
解决方案
我看到你还有其他process
是从“../../store/action/index”导入的
import { process } from "../../store/action/index";
所以它覆盖了process
系统。只需在导入时重命名您的流程
import { process as processAction } from "../../store/action/index";
const dispatchProcess = (encrypt, msg, cipher) => {
dispatch(processAction (encrypt, msg, cipher));
};
推荐阅读
- c# - 当我在 Xamarin.Forms 中更改 IsPassword 值时,占位符字体发生更改
- java - 如何将 Google Pixel 2 中的“Marvellous Marble”(动态壁纸)应用到您自己的应用程序中?
- mysql - LEFT JOIN 多个表不返回预期结果
- python-3.x - Python 中的属性错误:将 y 刻度设置为分钟
- assembly - AVR 汇编语言 - 堆栈指针问题
- python - 如何检测某人何时更改了 python 字典(和/或对象)?
- typescript - 具有 void 和未命名类型的联合类型的访问属性
- node.js - 如何使用 npm elasticsearch 和 http-aws-es 连接到 AWS ElasticSearch?
- go - 多个 go 项目并共享一个供应商目录(在 go 1.11 之前)
- c++ - 通过引用返回拥有的指针