小编Ras*_*rov的帖子

如何从 Material UI 导入 makeStyles?

我使用的是 Material UI 版本 5.2.7。当我从 导入 makeStyles 时@mui/materials/styles,出现以下错误 -

Uncaught Error: MUI: makeStyles is no longer exported from @mui/material/styles. You have to import it from @mui/styles. See https://mui.com/r/migration-v4/#material-ui-core-styles for more details.

它还说@mui/styles在 Material UI 版本 5 中已弃用。所以我对如何导入 makeStyles 感到困惑。有人对此有任何想法吗?

reactjs material-ui

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

为什么更改LD_LIBRARY_PATH对Ubuntu没有影响?

我试图部署我的应用程序Ubuntu 16.04.所以我制作了一个包含以下层次结构的包 -

Package
|
----bin
    |
    -----application
    -----application.sh
    -----Qt
         |
         -----necessary qt libraries
         -----platforms
Run Code Online (Sandbox Code Playgroud)

这是application.sh文件 -

#!/bin/sh
export LD_LIBRARY_PATH=`pwd`/Qt
./application
Run Code Online (Sandbox Code Playgroud)

当我执行该application.sh文件时,它显示我无法找到该libQt5MultimediaWidgets.so.5文件.但它在Qt文件夹中.此外,当我在导出后ldd applicationapplication.sh文件打印LD_LIBRARY_PATH它给我以下输出 -

在此输入图像描述 请检查标记的部分.任何人都可以解释为什么Qt即使在导出后仍未找到该文件夹中的库LD_LIBARRY_PATH

编辑:

所以正如@Zang建议的那样,我检查了调试日志,这里是 -

请检查标记的部分.

在此输入图像描述

看起来它实际上正在尝试实际libQt5MultimediaWidgets.so,然后报告它无法找到它.有谁能帮我理解这里发生的事情?

编辑-2:根据@Tarun的建议,我已经ls -al在我的Qt文件夹上运行了.这是输出 -

在此输入图像描述

ubuntu qt shared-libraries

8
推荐指数
3
解决办法
1661
查看次数

由于CORS,无法从S3存储桶中获取图像

问题是Access-Control-Allow-Origin当我尝试使用fetchAPI 进行提取时,我收到了cors错误(响应标头不包含)。这是我在S3中的cors配置-

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

可以在这里找到代码-https: //codepen.io/sourov0805045/pen/OKVBXM?editors=1111

我已经检查了响应标头,发现它不包含Allow-Access-Control-Origin标头。

但这如果我在一个<img>令人费解的标签中添加它可以正常工作。那时Access-Control-Allow-Origin响应头中也没有,但是图像正确加载。

A尝试了相同但axios没有效果。

请让我知道您对我如何解决此问题的建议。

javascript amazon-s3 fetch cors axios

7
推荐指数
1
解决办法
270
查看次数

如何使用 CloudFront 作为我的 App Runner 服务的反向代理?

我有一个运行 NodeJS/Express 服务器的 App Runner 服务,它是一个 REST API。应用程序运行器给了我以下终点 - https://example_server_random_id.awsapprunner.com

前端使用 React 开发,并作为静态网站部署在 S3 中。我创建了一个 CloudFront 发行版,用于从 S3 提供静态内容,并具有默认行为 (*)。CloudFront 给了我以下 URL - https://cloud_front_ranom_id.cloudfront.net

因此,我更新了后端代码以支持 CORS 并将 CloudFront URL 添加为允许的来源。在 React 应用程序中,我使用 App Runner URL 作为所有 API 调用的基本 URL。这个设置工作完美。

现在,我想通过使用 CloudFront 发行版作为我的 App Runner 服务的反向代理来摆脱 CORS 相关设置。为此,我做了以下工作 -

  1. 我添加了一个指向我的 App Runner 服务端点的自定义源 - https://example_server_random_id.awsapprunner.com

  2. 我创建了一个优先级为 0 的新行为 (/api*),因此它应该处理路径中包含“/api”的所有请求,而不是默认行为 (*)。此行为使用我在上一步中创建的自定义源。

  3. 我已允许此新行为的所有 HTTP 请求(GET、POST、OPTION、PUT 等)。

  4. 对于新行为,我使用“CachingDisabled”作为缓存策略,使用“All Viewer”作为源请求策略。

  5. 我已替换基本 URL 并使用 /api 作为新的基本 URL,而不是 App Runner 端点。

  6. 我没有从后端代码中删除 CORS 相关设置(access-control-allow-origin 标头值是 CloudFront 端点,access-control-allow-credential …

amazon-web-services amazon-cloudfront amazon-app-runner

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

是否可以在 React 应用程序中单独使用 Amplify Auth?

我对此有点陌生。我有一个基于 React 的 Web 应用程序,我们一直在使用 AWS cognito 进行身份验证。我用来amazon-cognito-identity-js在用户池中注册用户并进行登录。

现在我正在尝试替换该库,aws amplify auth因为它的界面干净。但我不想经历设置过程(放大 init 和所有内容),我想像我使用的那样使用它amazon-cognito-identity-js

这就是我到目前为止所做的

我已经Amplify Auth在我的app.js文件中配置了 -

import Amplify from 'aws-amplify';

Amplify.configure({
    Auth: {

        // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
        identityPoolId: 'my id pool',

        // REQUIRED - Amazon Cognito Region
        region: 'my-region',

        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'my-userpool',

        // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
        userPoolWebClientId: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amplifyjs reactjs aws-amplify

5
推荐指数
1
解决办法
2732
查看次数

当用户退出会话时如何正确删除cookie?

背景:

对于身份验证,我们使用 AWS Cognito。我们的项目包含一个 API 服务器和一个 Web 服务器。在客户端,当用户登录应用程序时,我们将用户名和密码发送到 cognito 实例,该实例返回 JWT 访问令牌。我们在 cookie 中设置访问令牌并将用户重定向到主页。在 http 服务器端,对于私有页面的每个请求,我们都会检查 cookie 并验证 JWT 访问令牌。同样,在 API 端,对于每个请求,我们都会检查 cookie 并验证访问令牌。

当用户从应用程序注销时,我们会删除 cookie 并从 cognito 中注销。这是删除 cookie 的代码 -

function clearCookie(name: string, domain: string, path: string) {
  const derivedDomain = domain || document.domain;
  const derivedPath = path || "/";
  document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:01 GMT; domain=${derivedDomain}; path=${derivedPath}`;
};
Run Code Online (Sandbox Code Playgroud)

问题:

当用户注销后按浏览器的后退按钮时,就会出现此问题。似乎当用户按下后退按钮时,页面会与 cookie 一起从缓存中恢复。由于 JWT 访问令牌仍然有效,因此用户按下后退按钮后,他们仍然可以进行 api 调用并导航应用程序。

有什么办法可以解决这个问题吗?如何删除 cookie,以便按后退按钮不会恢复 cookie?我应该使用其他身份验证工作流程来解决这个问题吗?

authentication cookies amazon-cognito

5
推荐指数
1
解决办法
5534
查看次数

使用ShaderMaterial的自定义几何体的纹理加载在Three.js中不起作用

在这里,我有一个有四个顶点和4个面的几何(金字塔) -

var geom = new THREE.Geometry();
geom.vertices.push(new THREE.Vector3(0,100,0), new THREE.Vector3(-100,-100,100), new THREE.Vector3(0,-100,-100), new THREE.Vector3(100,-100,100));
geom.faces.push( new THREE.Face3( 0, 2, 1), new THREE.Face3( 0, 1, 3), new THREE.Face3( 0, 3, 2), new THREE.Face3( 1, 2, 3) );
geom.computeFaceNormals();
Run Code Online (Sandbox Code Playgroud)

这是我的RawShaderMaterial -

var geomMaterial = new THREE.RawShaderMaterial({
        vertexShader: [
            'precision highp float;',
            'precision highp int;',
            'uniform mat4 modelViewMatrix;',
            'uniform mat4 projectionMatrix;',
            'attribute vec3 position;',
            'attribute vec2 uv;',
            'varying vec2 interpolatedUV;',
            'void main() {',
            'interpolatedUV = uv;',
            'gl_Position = projectionMatrix * modelViewMatrix * …
Run Code Online (Sandbox Code Playgroud)

javascript textures three.js

4
推荐指数
1
解决办法
1287
查看次数

是否可以从字节数组而不是文件路径构造 THREE.Texture?

我有一个服务器客户端系统,其中服务器解析模型文件并使用套接字将顶点数据发送到客户端。当模型包含纹理时,我的问题就出现了。我可以将纹理(png 文件)读取到字节数组并使用套接字将其发送到客户端。THREE.Texture但我不知道如何从字节数组创建一个。

所以这是我的问题,是否可以THREE.Texture从字节数组构造 a ?我怎样才能实现它?

此外,您还可以建议其他更好的方法将纹理从服务器发送到客户端。

谢谢。

javascript client-server three.js

3
推荐指数
1
解决办法
4343
查看次数

将索引添加到BufferGeometry不起作用?

我一直试图使用THREE.BufferGeometry()绘制一个非常基本的矩形.这是代码 -

var geometry = new THREE.BufferGeometry();
var material = new THREE.MeshBasicMaterial({color: 'rgb(255, 0, 0)'});


var verticesArray = [20, 0, 0, 0, 20, 0, -20, 0, 0, 0, -20, 0];
var vertices = new Float32Array(verticesArray, 0, 12);

var indicesArray = [0, 1, 2, 0, 2, 3];
var indices = new Uint16Array(indicesArray, 0, 6);

geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
//geometry.addAttribute('index', new THREE.BufferAttribute(indices, 3));
geometry.setIndex(new THREE.BufferAttribute(indices, 3));


var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用.它也没有抛出任何异常.据我所知,我做的一切都是正确的.我有四个顶点,我以逆时针顺序描述了两组索引.

有谁能告诉我这里可能出现什么问题?

javascript three.js

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

当工作线程发布消息时,如果主线程很忙会发生什么?

我有一种情况,工作线程解析一些数据并使用postMessage. 然后工作线程继续解析更多的数据。所以我们可以说,工作线程就像一个循环,在每次循环之后,它都会向主线程发送一些数据。

在主线程中,我在全局数组中进行了一些查找,以检查接收到的数据是否已经存在。如果没有,那么我将数据插入到数组中。当我这样做时,工作线程继续解析数据并将其发送到主线程。

查找可能非常昂贵且耗时。

现在我的问题是,它在每个浏览器中都崩溃了。但是如果我从主线程中删除查找并将数据插入全局数组,它工作正常。所以我假设崩溃正在发生,因为当第二个postMessage从工作线程调用时主线程保持忙碌。

我的问题有两个方面-

1)我的分析正确吗?我的意思是,如果postMessage从工作线程调用a 时主线程很忙,是否有可能崩溃?

2)有什么办法可以克服这种情况?

javascript multithreading web-worker

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

为什么具有长文件夹名称的CreateDirectoryEx不起作用?

这是我编写的示例代码,用于检查我是否能够创建名称长度大于的文件夹MAX_PATH-

wstring s = L"D:\\Test";
wstring s2 = L"\\?\D:\\datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000";

int ret = CreateDirectoryEx(s.c_str(), s2.c_str(), NULL);

int error = GetLastError();
Run Code Online (Sandbox Code Playgroud)

它不起作用,返回的错误是ERROR_PATH_NOT_FOUND.任何人都可以告诉我代码中的问题是什么?

注意: "D:\ Test"文件夹是现有文件夹.我使用的是Windows 7.

winapi max-path

0
推荐指数
1
解决办法
318
查看次数