Axios未定义

时间:2017-06-03 08:53:12

标签: reactjs axios

我正在使用axios用React.js构建一个简单的天气应用程序。我刚刚完成了代码,但是有一个问题。当我启动该应用时,它根本不起作用,我看到一个引用错误axios is not defined

这是我的webpack.config.js文件:

module.exports = {
    entry: './public/app/app.jsx',
    output: {
        path: __dirname,
        filename: './public/js/bundle.js'
    },
    externals: ['axios'],
    resolve: {
        root: __dirname,
        alias: {
            OpenWeatherMap: 'public/components/OpenWeatherMap.jsx',
            Main: 'public/components/Main.jsx',
            Nav: 'public/components/Nav.jsx',
            Weather: 'public/components/Weather.jsx',
            WeatherForm: 'public/components/WeatherForm.jsx',
            WeatherMessage: 'public/components/WeatherMessage.jsx',
            About: 'public/components/About.jsx'
        },
        extensions: ['', '.js', '.jsx']
    },
    module: {
        loaders: [{
            loader: 'babel-loader',
            query: {
                presets: ['react','es2015', 'stage-0']
            },
            test: /\.jsx?$/,
            exclude: /(node_modules|bower_components)/
        },{
            loader: 'json-loader',
            test: /\.json?$/
        }]
    }
};

和package.json文件:

{
  "name": "weather",
  "version": "1.0.0",
  "description": "Simple Weather App",
  "main": "ext.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Milad Fattahi",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.16.1",
    "express": "^4.15.3",
    "json": "^9.0.6",
    "json-loader": "^0.5.4",
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "react-router": "^4.1.1",
    "react-router-dom": "^4.1.1"
  },
  "devDependencies": {
    "babel-core": "^6.5.1",
    "babel-loader": "^6.2.2",
    "babel-preset-es2015": "^6.5.0",
    "babel-preset-react": "^6.5.0",
    "babel-preset-stage-0": "^6.24.1",
    "webpack": "^1.12.13"
  }
}

6 个答案:

答案 0 :(得分:7)

我知道这看起来很明显,但要确保文件顶部有一个引用到正确的axios或安装它 https://www.npmjs.com/package/axios

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

答案 1 :(得分:4)

我忘记了导入axios。我在脚本顶部添加了

import axios from 'axios';

我也忘记安装axios。我使用以下命令通过npm安装了axios:

npm i axios --global 
// --global flags will save you the stress of insstalling axios again.

那解决了我的错误。

答案 2 :(得分:2)

您可以将其添加到javascript文件的顶部:

const axios = require('axios').default;

答案 3 :(得分:1)

我认为首先您必须安装 npm install axios --save 然后将其导入app.js文件

import axios from "axios";

答案 4 :(得分:0)

https://unpkg.com/axios/dist/axios.min.js <<在我的 html 中链接(脚本 src="")

查看 npm 站点是否发生变化 https://www.npmjs.com/package/axios

然后我从我的 js 中删除了以下行...

const axios = require('axios')

对我来说没有其他问题了!

答案 5 :(得分:0)

公认的答案包括三种主要的补救措施,但还有第四种可能的补救措施。我会重复已经引用的完成

补救措施 1

在根项目文件夹中,安装 Axios:

npm i axios --global 

补救措施 2

在使用 axios 的 .js 文件中,导入 axios:

import axios from 'axios';

补救措施 3

从您的 externals: ['axios'] 中删除 webpack.config

补救措施 4

您不是通过拼写/大小写错误开始调用 axios。您可能会调用类似 await Axios 的东西,而不是正确的调用 await axios

this 这样的一些教程会出现拼写错误,这会给毫无戒心的新手带来很大的痛苦