小编Mat*_*hew的帖子

Node/Express - 拒绝应用样式,因为它的MIME类型('text/html')

在过去的几天里,我一直有这个问题,似乎无法深究这个问题.我们正在做一个非常基本的节点/快速应用程序,并尝试使用以下内容提供我们的静态文件:

app.use(express.static(path.join(__dirname, "static")));
Run Code Online (Sandbox Code Playgroud)

这完全符合我的预期.我们的静态文件夹中有一些用于css和javascript的文件夹.我们正在尝试使用此静态路径将css加载到EJS视图中:

<link rel="stylesheet" type="text/css" href="/css/style.css">
Run Code Online (Sandbox Code Playgroud)

当我们/到达我们的路线时,我们获得了所有内容,但我们的CSS没有加载.我们特别得到这个错误:

拒绝从' http:// localhost:3000/css/style.css ' 应用样式,因为其MIME类型('text/html')不是受支持的样式表MIME类型,并且启用了严格的MIME检查.

我尝试过的:

  1. 清除NPM缓存/全新安装
    • npm verify cache
    • rm -rf node_modules
    • npm install
  2. 清除浏览器缓存
  3. 对文件夹名称的各种修改和对它的引用
  4. 从href添加/删除正斜杠
  5. 将css文件夹移动到根目录并从那里提供服务
  6. 添加/删除斜杠 path.join(__dirname, '/static/')
  7. 有一个关于服务工作者的评论可能会在github问题报告中弄乱,并且似乎解决了很多人的问题.还有我们的本地主机没有服务人员:https://github.com/facebook/create-react-app/issues/658
    • 我们没有使用反应,但我正在抓住我能找到的任何谷歌搜索

路线:

app.get("/", function(req, res) {
    res.render("search");
});
Run Code Online (Sandbox Code Playgroud)

风景:

<!DOCTYPE html>
<html>
    <head>
        <title>Search for a Movie</title>
        <link rel="stylesheet" type="text/css" href="/static/css/style.css">
    </head>
    <body>
        <h1>Search for a movie</h1>
        <form method="POST" action="/results">
            <label for="movie-title">Enter a movie title:</label><br>
            <input id="movie-title" type="text" name="title"><br>
            <input type="submit" value="Submit Search">
        </form>
    </body> …
Run Code Online (Sandbox Code Playgroud)

static-files node.js mime-types express

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

为什么在 useState 中设置 React 组件是一种不好的做法?

为什么将组件存储为状态值是不好的做法?

const [Component, setComponent] = useState<JSX.Element>(<Empty />);
Run Code Online (Sandbox Code Playgroud)

假设我想根据许多不同的标准(所有条件都是互斥的)有条件地渲染一个组件。但在实际渲染之前,我想添加一个去抖动器(在x不活动的毫秒后延迟渲染)。我不一定会这样做,但它似乎更直观,并且只需将组件分配为状态值(在这种情况下)的代码就更少。我可以设置我的状态来保存文本值,在任何地方引用该值,并设置一个映射变量以将字符串映射到组件。但这似乎没有必要。我在网上读到这是一种不好的做法,你应该只将数据放入状态,但每个人似乎都方便地忽略了为什么是一种不好的做法。文档中似乎没有任何内容表明这是不好的做法。

这是一个有效的示例,希望能够说明为什么在状态中设置组件很方便。每个Message组件都会被记住,React.memo因此它们的 props 不会改变:

import React, { useState, useEffect } from 'react';
import useDebounce from '../../hooks/useDebounce';
import {
  TooShort,
  NoPrompt,
  LimitWarning,
  LimitReached,
  Empty,
} from './Messages';

interface Props {
  promptAreaTouched: boolean;
  promptText: string;
  debounceTimeout?: number;
}

const DEBOUNCE_TIMEOUT = 2000;
const SHORT_PROMPT_LENGTH = 5;
const APPROACHING_PROMPT_LENGTH = 40;
const MAX_PROMPT_LENGTH = 50;

const PromptLengthMessage = ({
  promptAreaTouched,
  promptText,
  debounceTimeout = DEBOUNCE_TIMEOUT, …
Run Code Online (Sandbox Code Playgroud)

debouncing typescript reactjs react-hooks

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