相关疑难解决方法(0)

“解析错误:关键字‘import’被保留”

0. 2023年4月:错误无法再重现

\n

该错误不再可重现。\n可能是因为React-scripts 5.0.1 中的错误修复。1
\n尽管它不再可重现,但这个问题和我的自我回答似乎仍然对 Angular 用户以及其他可能的用户感兴趣

\n

我将基本上保留这个问题,就像我在 2022 年 3 月提出这个问题时一样。

\n

包含 React 应用程序源文件的 zip 文件位于此处。\n与 2022 年相比,唯一的区别是我已将React-scripts版本 4.0.3 替换为 5.0.1。

\n

以下均指2022年3月

\n

在 Visual Studio Code 中,我得到\n Parsing error: The keyword \'import\' is reserved

\n

采取什么措施可以修复此错误?

\n\n

我在下面的第 2 部分中提供了我的.eslintrc.json文件package.json

\n

运行npm install以在本地安装项目。2
\n\xe2\x80\x93 这可能需要大约 1\xe2\x80\x939 分钟,具体取决于您的带宽和硬件。
\n然后npm start应该在默认 Web 浏览器中打开该项目。 …

javascript node.js eslint create-react-app eslintrc

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

React 钩子真的必须从“使用”开始吗?

让我们创建一个非常简单的钩子useDouble,它返回一个数字的双精度:

export default function useDouble(nb) {
  return nb * 2;
}
Run Code Online (Sandbox Code Playgroud)

文档(https://reactjs.org/docs/hooks-custom.html#extracting-a-custom-hook)内容如下:

自定义 Hook 是一个 JavaScript 函数,其名称以“use”开头,并且可以调用其他 Hook

但如果我useDouble改为double,它仍然有效。我什至尝试从double钩子中调用其他钩子,它仍然有效。

演示:https : //codesandbox.io/s/laughing-gareth-usb8g?file=/ src/ components/WithUseDouble.js

所以我的问题是:命名钩子useXxxxx只是一种约定,还是真的能以某种方式打破某些东西?如果可以,你能举个例子吗?

谢谢

javascript reactjs react-hooks

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

从 Create React App 扩展 TypeScript ESLint 配置

我已按照本指南扩展我的 ESLint 配置。

https://create-react-app.dev/docs/setting-up-your-editor/#experimental-extending-the-eslint-config

该文档指出Note that any rules set to "error" will stop the project from building。我已在与我的文件相同的文件夹中添加了一个.env文件。EXTEND_ESLINT=truepackage.json

https://create-react-app.dev/docs/advanced-configuration/

添加此文件后,npm run build即使使用 package.json 中的默认值,我也不再收到来自命令的警告:

在此输入图像描述

"eslintConfig": {
  "extends": "react-app"
},
Run Code Online (Sandbox Code Playgroud)

如果我将.env文件设置为EXTEND_ESLINT=false警告,警告就会再次出现。

在此输入图像描述

首先这样做的原因是因为我想添加no-multiple-empty-lines这样的规则:

"eslintConfig": {
  "extends": [ "react-app" ],
  "rules": {
    "no-multiple-empty-lines": [
      "error",
      {
        "max": 1,
        "maxEOF": 0,
        "maxBOF": 0
      }
    ]
  }
},
Run Code Online (Sandbox Code Playgroud)

https://eslint.org/docs/rules/no-multiple-empty-lines

我认为配置是正确的,因为当我添加此规则时,以下命令将显示预期结果:

npx eslint . --ext .js,.jsx,.ts,.tsx
Run Code Online (Sandbox Code Playgroud)

配置更改前:

在此输入图像描述

配置更改后:

在此输入图像描述

读取.env文件时,它表示npm run …

javascript typescript reactjs eslint create-react-app

5
推荐指数
0
解决办法
1273
查看次数

React Typescript 类型转换问题 - 解析错误:缺少分号

我有这行简单的代码:

const target = e.target as HTMLLIElement;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  Line 18:28:  Parsing error: Missing semicolon
> 18 |     const target = e.target as HTMLLIElement;
     |                            ^
Run Code Online (Sandbox Code Playgroud)

我查看了几十个与我的问题类似的不同帖子,但没有一个与我的问题完全匹配,或者他们的解决方案与我的项目并不真正相关。例如,有些人遇到了 eslint 问题,但我没有安装 eslint 包。这是我的package.json文件:

{
  "name": "ally-autobot",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@craco/craco": "^6.1.1",
    "@reduxjs/toolkit": "^1.5.1",
    "@tailwindcss/postcss7-compat": "^2.1.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "@types/jest": "^24.0.0",
    "@types/lodash": "^4.14.168",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.0",
    "@types/react-dom": "^16.9.0",
    "@types/react-redux": "^7.1.7",
    "@types/react-router-dom": "^5.1.7",
    "autoprefixer": "^9",
    "firebase": "^8.4.2",
    "firebase-tools": "^9.10.0",
    "lint": "^0.7.0",
    "lodash-core": "^4.17.19",
    "postcss": "^7",
    "react": …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs eslint tsconfig

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