标签: create-react-app

强制react-router应用程序向服务器发送URL请求

我正在开发一个带有 React 路由器的 React 应用程序,其中的服务器托管 React 应用程序本身和 REST API。路由器是来自react-router-redux的ConnectedRouter。据我了解,一旦您在浏览器中打开应用程序,对 URL 的任何更改都不会从服务器请求,而是在 React 路由器中处理客户端,即使您重新加载页面或手动在地址栏中写入一些内容。

首次打开应用程序时,实际的 HTML、JS 和 CSS 文件是从 Web 服务器加载的,该服务器配置为仅在用户获得授权时才提供服务。这样,服务器可以将用户重定向到第三方身份验证站点,或者在用户通过身份验证但未授权时提供 401 消息。但是,当用户会话过期、用户注销或用户权限发生更改而不再被授权打开应用程序时,就会出现问题。然后,当用户在之前缓存过该应用程序的浏览器上打开该应用程序时,它似乎可以正常打开,但会出现很多错误,因为每个 API 调用现在都会失败。

为了解决这个问题,我想,当API调用失败时,告诉用户重新加载页面,以便向服务器发出请求以获取应用程序(index.html等),以便他被重定向到第三个当事人认证网站。然而,常规的浏览器重新加载(F5)并不能解决问题。该请求被react-router吞下,并且永远不会到达服务器。window.location.reload() 也是如此。硬重新加载,即 Ctrl+F5 似乎可以解决问题,至少在 Chrome 中是这样,但有些用户可能不明白这一点。因此,我想向用户展示一个“硬重新加载”按钮,暂时告诉react-router产生url请求,以便它们可以传递到服务器并尝试获取index.html。

所以我的问题是:如何暂时以编程方式强制客户端应用程序允许 URL 请求正常发送到服务器,而不是在 React-router 中自行处理它们?

或者,如果这是不可能的,我如何以编程方式从浏览器的内存中清除应用程序,以便它被迫再次请求服务器?

编辑:我认为请求被反应路由器吞掉的假设是错误的。它是 create-react-app 框架中的 Service Worker。服务工作者公开了一个注销函数来解决我的问题。

javascript reactjs react-router react-router-redux create-react-app

2
推荐指数
1
解决办法
3335
查看次数

为什么我应该为 ReactJS 创建单独的项目?

我想在我的新 Web 应用程序中使用 React 作为前端,使用 Express 作为后端。

根据指南,我必须在项目目录中使用create-react-app工具创建子项目:

my-project
|-frontend
| |-package.json
| |-components
| | |-...
| | 
| |-...
|
|-backend
| |-api
| | |-...
| |-app.js
| |-...
|
|-package.json
Run Code Online (Sandbox Code Playgroud)

在开发过程中,我应该在不同的端口上启动两个服务器,分别用于后端和前端,并且对后端的代理请求抛出React服务器。

这个计划对我来说看起来很丑陋。如何配置后端服务器以提供与react-scripts相同的功能,以避免使用单独的服务器

node.js reactjs webpack babeljs create-react-app

2
推荐指数
1
解决办法
2295
查看次数

在 npm start 上创建 React 应用程序错误 - “找不到模块”

我正在尝试使用 create-react-app 启动 React 项目。npm start
出现错误:

Failed to compile.

multi ./node_modules/react-scripts/config/polyfills.js ./node_modules/react-dev-utils/webpackHotDevClient.js ./src/index.js
Module not found: Can't resolve 'D:\' in 'D:\!!!DESKTOP\React-test\test-react'
Run Code Online (Sandbox Code Playgroud)

我该如何修复它?

javascript npm reactjs create-react-app

2
推荐指数
1
解决办法
1万
查看次数

list.map 不是函数 help create-react-app

嗨,有人能告诉我为什么我得到 list.map 不是函数错误吗?我很确定我的 React 代码列出了一个数组,但我是一个初学者,所以我可能忽略了一些东西

import React, { useState, useEffect } from "react";
import Task from "./Task";

function Home() {  
  const [text, setText] = useState("");
  const [task, setTask] = useState("");
  const [list, setList] = useState([]);

  useEffect(() => {
    setList(list.push(task));
  }, [task]);

  const addTask = (e) => {
    e.preventDefault();
    setTask(text);
    setText("");
  };

  const updateText = (e) => {
    setText(e.target.value);
  };

  return (
    <div className="Home">
      <h3>Home Page</h3>
      <form onSubmit={addTask}>
        <input type="text" value={text} onChange={updateText} />
        <button type="submit">Add</button>
      </form>
      <div className="listoftasks">
        {list.map((t) => ( …
Run Code Online (Sandbox Code Playgroud)

javascript arrays reactjs create-react-app react-hooks

2
推荐指数
1
解决办法
80
查看次数

如何从 react-create-app 创建一个包文件

我正在尝试构建 react-create-app一个文件(包括 JS、CSS、PNG 等...)。

这是可能的,如何?

我应该尝试使用 rollup 还是可以使用 webpack?

我测试了https://www.npmjs.com/package/html-webpack-inline-source-plugin但看起来已经过时并且无法正常工作。

rollup reactjs webpack create-react-app

2
推荐指数
1
解决办法
2325
查看次数

是否可以将 html get 请求从 create-react-app 代理到 /graphql?

我有一个 create-react-app 应用程序,我通过添加以下内容启用了代理:

"proxy": "http://localhost:3001",
Run Code Online (Sandbox Code Playgroud)

到我的 package.json。这适用于对 /graphql 的 API 请求,但是当 Web 浏览器请求 /graphql(用于加载 UI 以运行查询)由前端处理而不是代理时。是否也可以代理它?

当我尝试通过访问https://localhost:3000/auth/facebook进行 OAuth 时,会发生同样的事情,前端处理它而不是后端。

proxy create-react-app

2
推荐指数
1
解决办法
316
查看次数

npm 错误!404 未找到 - 获取 https://registry.npmjs.org/creat-react-app - 未找到

之前发生过此错误并已找到解决方案(https://github.com/facebook/create-react-app/issues/8465运行 npm install create-react-app 时出现错误 404)。他们似乎都不适合我。还有其他想法吗?

npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/creat-react-app - Not found
npm ERR! 404 
npm ERR! 404  'creat-react-app@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! …
Run Code Online (Sandbox Code Playgroud)

npm reactjs create-react-app

2
推荐指数
1
解决办法
7090
查看次数

npx create-react-app myapp 错误“\AppData\Roaming\npm-cache\_npx\19748”在 appdata 文件夹中不包含 package.json 文件

操作系统:
使用 npx 创建反应应用程序的Windows我编写了以下命令:

npx create-react-app myapp
Run Code Online (Sandbox Code Playgroud)

它显示此错误:

npm ERR! Could not install from "myusername\AppData\Roaming\npm-cache\_npx\19748" as it does not contain a package.json file.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

node.js npm reactjs create-react-app npx

2
推荐指数
2
解决办法
5184
查看次数

使用 React Router 进行服务器端渲染“浏览器历史需要一个 DOM”

我已经通过互联网扫描了两天,但我无法了解使用 react-routes 实现 SSR 的要点。在没有路线的情况下,我花了 5 天的时间才以某种方式理解这一切。但是现在我无法进一步理解使用react-routes。这是必要的细节-

服务器/server.js

import express from 'express';
import fs from 'fs';
import path from 'path';

import React from 'react';
import ReactDOMServer from 'react-dom/server';
import {StaticRouter} from 'react-router-dom';

import App from '../src/App';

const PORT = process.env.PORT || 8080;

const app = express();

app.use(express.static(path.resolve('./build')))

app.get('*', (req, res) => {

    fs.readFile(path.resolve('./build/index.html'), 'utf-8', (err, data) => {

    if (err) {
      console.log(err);
      return res.status(500).send('Some error happened');
        }

        const context = {};
        const app = ReactDOMServer.renderToString(
            <StaticRouter …
Run Code Online (Sandbox Code Playgroud)

node.js reactjs react-router server-side-rendering create-react-app

2
推荐指数
1
解决办法
814
查看次数

如何从 create-react-app 项目中的代码渲染图像

在我的应用程序中,我有一些具有以下内容的 css:

background-image: url("../../assets/img/webheader.jpg");
Run Code Online (Sandbox Code Playgroud)

然后从这个 url 加载图像:http://localhost:3000/static/media/webheader.e3104798.jpg

现在,出于开发目的,我想从组件内的代码加载该图像,我得到这样的路径:

function getImages() {
    var prefix = process.env.PUBLIC_URL;
    let images = [
         prefix + '/assets/img/webheader.jpg'
    ];
    return images;
}
Run Code Online (Sandbox Code Playgroud)

根据这个文档https://create-react-app.dev/docs/using-the-public-folder,我不得不从获得前缀process.env.PUBLIC_URL;或使用%PUBLIC_URL%

前者给我一个空字符串作为前缀,后者在渲染 img 后给我这个错误:

**URIError: Failed to decode param '/%PUBLIC_URL%/assets/img/webheader.jpg'**
Run Code Online (Sandbox Code Playgroud)

使用该数组中的值呈现 img HTML 元素只会给我一个状态代码 Status Code: 304 Not Modified

可能是什么问题呢?

有人问我如何使用 getImages()

我有一个具有构造函数的组件:

 class Portafolio extends React.Component {
    constructor(props){
        super(props);
        this.state = {
            images: getImages()
        };
    }
    render() {
        return (
            <div>
                <NavBar/>
                <div className="container">
                    <GradientImages imageList={this.state.images}/>
                </div> …
Run Code Online (Sandbox Code Playgroud)

reactjs create-react-app

2
推荐指数
1
解决办法
346
查看次数