我使用的是 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 感到困惑。有人对此有任何想法吗?
我试图部署我的应用程序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 application
从application.sh
文件打印LD_LIBRARY_PATH
它给我以下输出 -
请检查标记的部分.任何人都可以解释为什么
Qt
即使在导出后仍未找到该文件夹中的库LD_LIBARRY_PATH
?
编辑:
所以正如@Zang建议的那样,我检查了调试日志,这里是 -
请检查标记的部分.
看起来它实际上正在尝试实际libQt5MultimediaWidgets.so
,然后报告它无法找到它.有谁能帮我理解这里发生的事情?
编辑-2:根据@Tarun的建议,我已经ls -al
在我的Qt文件夹上运行了.这是输出 -
问题是Access-Control-Allow-Origin
当我尝试使用fetch
API 进行提取时,我收到了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
没有效果。
请让我知道您对我如何解决此问题的建议。
我有一个运行 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 相关设置。为此,我做了以下工作 -
我添加了一个指向我的 App Runner 服务端点的自定义源 - https://example_server_random_id.awsapprunner.com
我创建了一个优先级为 0 的新行为 (/api*),因此它应该处理路径中包含“/api”的所有请求,而不是默认行为 (*)。此行为使用我在上一步中创建的自定义源。
我已允许此新行为的所有 HTTP 请求(GET、POST、OPTION、PUT 等)。
对于新行为,我使用“CachingDisabled”作为缓存策略,使用“All Viewer”作为源请求策略。
我已替换基本 URL 并使用 /api 作为新的基本 URL,而不是 App Runner 端点。
我没有从后端代码中删除 CORS 相关设置(access-control-allow-origin 标头值是 CloudFront 端点,access-control-allow-credential …
我对此有点陌生。我有一个基于 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) 背景:
对于身份验证,我们使用 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?我应该使用其他身份验证工作流程来解决这个问题吗?
在这里,我有一个有四个顶点和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) 我有一个服务器客户端系统,其中服务器解析模型文件并使用套接字将顶点数据发送到客户端。当模型包含纹理时,我的问题就出现了。我可以将纹理(png 文件)读取到字节数组并使用套接字将其发送到客户端。THREE.Texture
但我不知道如何从字节数组创建一个。
所以这是我的问题,是否可以THREE.Texture
从字节数组构造 a ?我怎样才能实现它?
此外,您还可以建议其他更好的方法将纹理从服务器发送到客户端。
谢谢。
我一直试图使用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)
不幸的是它不起作用.它也没有抛出任何异常.据我所知,我做的一切都是正确的.我有四个顶点,我以逆时针顺序描述了两组索引.
有谁能告诉我这里可能出现什么问题?
我有一种情况,工作线程解析一些数据并使用postMessage
. 然后工作线程继续解析更多的数据。所以我们可以说,工作线程就像一个循环,在每次循环之后,它都会向主线程发送一些数据。
在主线程中,我在全局数组中进行了一些查找,以检查接收到的数据是否已经存在。如果没有,那么我将数据插入到数组中。当我这样做时,工作线程继续解析数据并将其发送到主线程。
查找可能非常昂贵且耗时。
现在我的问题是,它在每个浏览器中都崩溃了。但是如果我从主线程中删除查找并将数据插入全局数组,它工作正常。所以我假设崩溃正在发生,因为当第二个postMessage
从工作线程调用时主线程保持忙碌。
我的问题有两个方面-
1)我的分析正确吗?我的意思是,如果postMessage
从工作线程调用a 时主线程很忙,是否有可能崩溃?
2)有什么办法可以克服这种情况?
这是我编写的示例代码,用于检查我是否能够创建名称长度大于的文件夹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.
javascript ×5
three.js ×3
reactjs ×2
amazon-s3 ×1
amplifyjs ×1
aws-amplify ×1
axios ×1
cookies ×1
cors ×1
fetch ×1
material-ui ×1
max-path ×1
qt ×1
textures ×1
ubuntu ×1
web-worker ×1
winapi ×1