导入 axios 会导致浏览器中出现大小写意外行为警告



我正在学习一个将 axios 用于 HTTP 请求的教程。我已经设置了一个 axios 实例,如下所示:

import axios from 'axios';
const axiosInstance = axios.create({
baseUrl: 'https://www.google.com/'
});
export default axiosInstance;

我已将其保存在项目的根目录中,名为AxiosOrders.js。当我使用import MyAxios from '../../AxiosOrders';导入文件而不执行任何其他操作时,控制台会记录:

C:/DEV/Projects/learning-initiative/burger-builder/node_modules/process/browser.js
There are multiple modules with names that only differ in casing.
This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
Use equal casing. Compare these module identifiers:
* C:DEVProjectslearning-initiativeburger-buildernode_modulesbabel-loaderlibindex.js??ref--6-oneOf-2!C:DEVProjectslearning-initiativeburger-buildernode_modulesprocessbrowser.js
Used by 2 module(s), i. e.
C:DEVProjectslearning-initiativeburger-buildernode_modulesbabel-loaderlibindex.js??ref--6-oneOf-2!C:DEVProjectslearning-initiativeburger-buildernode_modulesreact-error-overlaylibindex.js
* C:DEVProjectslearning-initiativeburger-buildernode_modulesbabel-loaderlibindex.js??ref--6-oneOf-2!C:devProjectslearning-initiativeburger-buildernode_modulesprocessbrowser.js
Used by 1 module(s), i. e.
C:DEVProjectslearning-initiativeburger-buildernode_modulesbabel-loaderlibindex.js??ref--6-oneOf-2!C:devProjectslearning-initiativeburger-buildernode_modulesaxioslibdefaults.js

当我使用导入的对象时,它不会从我创建的实例中获取 baseUrl。

MyAxios.post('/orders.json', order)
.then(response => console.log(response))
.catch(error => console.log(error));

实际上向http://localhost:3000/orders.json提出了请求。当我放置调试器并尝试通过键入将对象打印到控制台时MyAxios它会告诉我Uncaught ReferenceError: MyAxios is not defined.

这是大小写警告所指的还是我错过了什么?

我的包.json按照要求:

{
"name": "burger-builder",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"prop-types": "^15.7.2",
"react": "^16.13.0",
"react-dom": "^16.13.0",
"react-scripts": "3.4.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

您可以尝试以下方法来解决您的问题:

  1. 首先,德尔你的node_modules文件夹。杀死所有终端(或窗口cmd(并重新打开终端并正确导航到项目路径。确保使用正确的文件夹名称大小写。例如:如果您的文件夹名称是DEV请不要执行cd dev。做cd DEV.然后执行 npm 安装。看这里和这里
  2. 在您的项目中,查看您是否正在执行任何import React from 'React';而不是import React from 'react';

导出和导入公理的方式没有错。如果您的路径问题得到解决,那么将拾取 axios 的正确实例,并在您执行MyAxios.post时拾取正确的 url。

看起来这两个模块实际上是同一个模块:node_modulesprocessbrowser.js

无论如何,它们的全名是C:DEV...C:dev...;可能这就是警告的原因;删除node_modules目录和package-lock.json文件并再次安装依赖项,应该可以解决警告的问题。

在控制台中键入MyAxios会导致ReferenceError,因为它是在包中定义的,而不是window属性。

曾经说过,我认为您的主要问题(致电http://localhost:3000/orders.json(的根源在其他地方。

希望这有所帮助。

最新更新