我在构建多租户 SaaS 解决方案时遇到问题。对于每个租户,我希望他们使用子域,这样我就可以从 url 获取子域,调用返回有关该租户的数据的 REST api。
例如,
tenant1。tenant1.localhost:3000. 我获取了 url,并获取了域名。然后,我与域进行调用以获取租户的主题(这存储在 localStorage 中)。不幸的是,我们在我的公司部署在 k8 上,所以我无法模仿这种行为。因此,devOps 团队建议我在上下文中使用子域,从而拥有localhost:3000/tenant1. 请记住,租户是动态的,所以我尝试了以下方法:
<BrowserRouter basename={"/:tenant"}>
<Switch>
<Route exact path="/login" name="Login" component={Login} />
<Route exact path="/set-password/:token" name="Set Password" component={SetPassword} />
<PrivateRoute path="/" name="Default Layout" component={DefaultLayout} />
</Switch>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
然而,上面的解决方案使我的 url 为 localhost:3000/:tenant/login
请问我如何在路由器中使用动态基本名称,以便它可以接受:
localhost:3000/tenant1
localhost:3000/tenant3
localhost:3000/tenant2ETC。
它可以允许任何,我的应用程序处理输入的错误域
javascript frontend reactjs react-router-v4 react-router-dom
我想在我的 react JS 应用程序中使用一些 Cordova 插件,但该应用程序一直失败。我知道cordova 仅在运行时可用,因为我需要一种解决方法。
我的应用程序是通过 create react app with cordova here创建的
比如我想导入cordova-plugin-device来获取设备uuid,代码如下:
import React, {Component} from 'react';
...
var device = require("cordova-plugin-device");
class Login extends Component {
handleSubmit = () => {
const { phone, password } = this.state
let params = {
phonenumber: phone,
password: password,
deviceID: device ? device.uuid : "test"
}
...
}
render () {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在npm start运行时遇到错误npm build。这是错误Module not found: Can't resolve 'cordova-plugin-device' …