使用.env文件编写由Auth0提供的身份验证的create-react-app应用程序时,出现“需要域选项”错误。是什么原因造成的,我该如何解决?
((从代码导入语句中看到,我正在使用react-use-auth npm模块。)
注意:此问题的答案可能在其他SO问题中找到,但它们未引用此错误。希望这个问题可以帮助出现此错误的人更快地找到解决方案。我正在发布找到的解决方案,但是如果此错误还有其他原因,也要记录这些问题。
index.js文件:
import React from 'react';
import ReactDOM from 'react-dom';
import { withRouter } from "react-router-dom";
import { AuthProvider } from "react-use-auth";
import App from './App';
ReactDOM.render(
<React.StrictMode>
<AuthProvider
navigate={props.history.push}
auth0_domain={process.env.REACT_APP_AUTH0_DOMAIN}
auth0_client_id={process.env.REACT_APP_AUTH0_CLIENT_ID}>
<App />
</AuthProvider>
</React.StrictMode>,
document.getElementById('root')
);
export default withRouter(App);
。env文件(在由create-react-app创建的根目录中:
REACT_APP_AUTH0_DOMAIN=[auth0_domain_name]
REACT_APP_AUTH0_CLIENT_ID=[auth0_client_id]
注意您的.env和环境变量!
如here所述,“域选项为必需的错误”可能是由于环境变量存在问题引起的。实际上,替换
[{process.env.REACT_APP_AUTH0_DOMAIN}
和{process.env.REACT_APP_AUTH0_CLIENT_ID}
使用实际值可使错误消失。
使用.env文件时,请注意以下几点(此SO answer中有详细说明):
1。 create-react-app具有其自己的机制,可以访问.env文件(无需使用dotenv)。
2。确保环境变量的前缀为REACT_APP _。
3。确保.env文件位于应用程序的根目录中(由create-react-app创建时)。
[4。确保从命令行RESTART应用程序使.env更改生效。
所有这些都使我绊倒,但最近没有重新启动(#4)导致此错误。