gpt4 book ai didi

android - Cordova 安卓 ReactJS

转载 作者:行者123 更新时间:2023-11-29 00:05:39 25 4
gpt4 key购买 nike

我在构建 Android 应用程序时遇到 Cordova 问题。当我打开我的 cordova 应用程序时,我的 react-router 从未被调用,我不明白为什么。

当我在浏览器中运行我的应用程序时,它运行得非常好,但是当我使用 cordova 构建应用程序时,该应用程序只显示白屏。

这是我的路由器:

export default (
<Router history={history}>
<Route component={ App }>
<Route name="Calendar" path="calendar" component={ Calendar } ignoreScrollBehavior />
<Route name="Story" path="story/:id" component={ Story } ignoreScrollBehavior />
<Redirect from="/" to="calendar" />
<Redirect from="/index.html" to="calendar" />
</Route>
</Router>
);

这是我的 webpack.config:

var path = require('path');
var webpack = require("webpack");

module.exports = {
context: __dirname + '/app',
entry: ['./render.js'],
output: {
path: __dirname + '/www',
filename: 'bundle.js'
},
resolve: {
root: [path.join(__dirname, "bower_components")]
},
node: {
console: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty'
},
module: {
loaders: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
optional: ['runtime'],
stage: 0
}
},
{ test: /\.json$/,
loader: 'json-loader'
},
{
test: /\.(css|scss)$/,
loader: 'style!css!sass!postcss'
},
{
test: /\.(jpg|png|woff|ttf|eot|svg|otf)$/,
loader: 'url-loader?limit=100000'
}
]
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
};

render.js 我的配置文件的入口点:

'use strict';

import './assets/scss/main.scss';
import React from 'react';
import ReactDOM from 'react-dom';
import { Router } from 'react-router';
import routes from './routes.js';
import createBrowserHistory from 'history/lib/createBrowserHistory';

let history = createBrowserHistory();

ReactDOM.render(<Router history={history}>{routes}</Router>, document.getElementById('app'));

最后但同样重要的是我的 index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="user-scalable=no, initial-scale=1, maximum-scale=1,
minimum-scale=1, width=device-width" name="viewport">
<title>Calendar</title>
</head>
<body>
<div id="app" class="container"></div>
<script src="bundle.js"></script>
</body>
</html>

到目前为止,我已经发现我的应用程序一旦用 cordova 构建,就不再调用路由器,因此永远停留在 index.html 上,没有任何内容。

所以我的问题是我该如何解决这个问题?

最佳答案

您可以使用 cordova 中的 hashHistory 修复它。由于没有服务器会从 cordova 为您的应用程序提供服务(仅加载文件 Assets ,无法进行重写),索引路由将不起作用,由于 ERROR_FILE_NOT_FOUND,您的页面将变为空白。

调整你的 render.js 以包含

//因为在 cordova 环境中没有使用服务器,所以在那里使用 hashHistory
const baseHistory = process.env.CORDOVA ? hashHistory : 浏览器历史;

并调整您的 webpack 配置以使用 DefinePlugin 来设置环境变量

const __CORDOVA__ = process.env.BUILD_TARGET === 'cordova';
...
new webpack.DefinePlugin({
'process.env': {
CORDOVA: JSON.stringify(__CORDOVA__),
},
}),

关于android - Cordova 安卓 ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com