Javascript 来自IP地址发生变化的机器的JS服务和REST API
我有一个使用React的应用程序,它通过axios与REST服务器接口。REST服务器(flask)位于为JS项目的构建提供服务的同一台机器上。所服务的项目是npm运行构建的输出。然后使用NPMServe部署此包。然后从不同IP的远程计算机查看web界面 我遇到的问题是,为站点提供服务的机器的IP和REST API可能会更改。如何更改axios动态调用的IP?目前,我有一个脚本可以在js构建中搜索IP字符串,并用当前IP替换它Javascript 来自IP地址发生变化的机器的JS服务和REST API,javascript,reactjs,flask,npm,axios,Javascript,Reactjs,Flask,Npm,Axios,我有一个使用React的应用程序,它通过axios与REST服务器接口。REST服务器(flask)位于为JS项目的构建提供服务的同一台机器上。所服务的项目是npm运行构建的输出。然后使用NPMServe部署此包。然后从不同IP的远程计算机查看web界面 我遇到的问题是,为站点提供服务的机器的IP和REST API可能会更改。如何更改axios动态调用的IP?目前,我有一个脚本可以在js构建中搜索IP字符串,并用当前IP替换它 使用像ip这样的实用程序只返回localhost。我想我需要找到一种
使用像
ip
这样的实用程序只返回localhost。我想我需要找到一种方法来获得谁在为脚本服务的IP 您可以使用env
变量来解决这些问题。一种流行的方法是使用。您的package.json
文件在script
部分将有一个build
命令。您必须修改这些配置,将所需配置添加为环境变量
,并在需要时在代码中使用它
例如:
{
"scripts": {
"build:prod": "cross-env API_URL=http://myserverip.com NODE_ENV=production webpack --config build/webpack.config.js",
"build:dev": "cross-env API_URL=http://localhost:8000 NODE_ENV=development webpack --config build/webpack.config.js"
}
}
然后可以使用不同的命令来构建它们。要生成prod runnpm run build:prod
。要生成dev,请运行npm运行build:dev
在代码中,您可以使用process.env.API_URL
(在您编写ip地址/主机名的地方),它将根据构建具有不同的值。要允许webpack替换这些env
变量,请使用webpack将插件定义为
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
API_URL: JSON.stringify(process.env.API_URL),
}
})
如果REST服务器和API共享一个公共服务器,您可以完全省略IP地址,而不是
axios.get('http://123.4.567.89/user?ID=12345')
你可以
axios.get('/user?ID=12345')
除此之外,使用DNS通常是更好的方法:
axios.get('http://my.domain/user?ID=12345')
你为什么要用JS而不是DNS来解决这个问题?很酷。我会试一试,然后再报告。API_URL可以在linux中设置,还是只能在package.json中设置?您也可以在linux中设置。通常,机密最好在操作系统中显示,或在构建过程中动态设置。它从本地网络计算机提供服务,并在本地网络上查看。所以排除了DNS。我仍然会尝试使用无url选项。'/user?ID=12345'对我来说很有效。这应该被标记为答案。