Javascript 未捕获的TypeError:无法读取未定义的属性“post”

Javascript 未捕获的TypeError:无法读取未定义的属性“post”,javascript,node.js,express,Javascript,Node.js,Express,我试图在不同的javascirpt文件中分离我的代码,因此我有一个更好的顺序和这些分离的责任,但是如果我使用导入/导出或“module.exports/require”导入应用程序,我会得到错误,它不允许我使用post、get等 apiGoogleMaps.js server.js address.jsx反应文件 您正在从apiGoogleMaps.js导出函数respuestaMensaje,但该函数在server.js中的任何位置都没有使用。要按照您想要的方式重构代码,我会这样做- serv

我试图在不同的javascirpt文件中分离我的代码,因此我有一个更好的顺序和这些分离的责任,但是如果我使用导入/导出或“module.exports/require”导入应用程序,我会得到错误,它不允许我使用post、get等

apiGoogleMaps.js server.js address.jsx反应文件
您正在从apiGoogleMaps.js导出函数respuestaMensaje,但该函数在server.js中的任何位置都没有使用。要按照您想要的方式重构代码,我会这样做-

server.js

apiGoogleMaps.js


APIRL我从react组件发送此变量,excuseme,不存在任何不同的方式,应用程序可以使用全局方式?您可以将APIRL作为常量放在一个单独的文件(如endpoints.js)中,并将该文件导入react组件和node code server.js中。您从react组件附加到url的任何内容都可以在node js代码中作为req.param访问。不明白,我是node中的新手,我真诚地想离开它。如果您想调用http://maps.google.com/maps/api/geocode/json?address= 此url来自您的代码,然后使用react代码中的fetch api。或者axios library.ok,然后从react代码中执行request.postapiUrl。在这种情况下,根本不需要调用节点js代码。
const app = require('../server.js');

export function respuestaMensaje(apiUrl, app) {
    console.log(apiUrl);
    app.post(apiUrl, (req, res) => {
        console.log(req.body);
    });
}
const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackConfig = require('../webpack.config');
const path = require('path');

const app = express();

app.set('port', process.env.PORT || 3000);

app.use(webpackDevMiddleware(webpack(webpackConfig)));

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, '..', 'public', 'index.html'));
});

app.get('/api', (req, res) => {
    res.json({api: "Woks Fine"});
});

app.listen(app.get('port'), () => {
    console.log("App Start in Port", app.get('port'));
});

export default app;
import React, { Component } from 'react';
import { render } from 'react-dom';
import request from 'superagent';
import  {respuestaMensaje}  from '../../../src/handlers/apiGoogleMap.js';


class AddressInput extends Component{

    constructor(){    
        super();
        this.state = {
            address: "",
            api:"http://maps.google.com/maps/api/geocode/json?address=",
            direccion: "",
            latitud: "",
            longitud:""
        };
    } 

    render(){
        return(
            <div> 

                <form>                
                    <input type="text" value={this.state.address} onChange={this.updateAdress.bind(this)}/>
                    <button onClick={this.getAddressGeo.bind(this)}>Consultar</button> 
                </form>

                <ul>
                    <li><label>Direccion:</label>{this.state.direccion}</li>
                    <li><label>Latitud:{this.state.latitud}</label></li>
                    <li><label>Longitud:{this.state.longitud}</label></li>
                </ul>
            </div> 
        )
    }

    updateAdress(event){
        this.setState({
            address: event.target.value
        });
    }

    getAddressGeo(e){

        e.preventDefault();
        const apiUrl = this.state.api + this.state.address;
        respuestaMensaje(apiUrl);

    } 
}

export default AddressInput;
var apiGoogleMaps = require('./apiGoogleMaps');
app.use(`/${apiUrl}`, apiGoogleMaps);
var express       = require('express')
var router        = express.Router()
router.post('/', (req, res)=>{
 console.log(req.body)
})
module.exports = router;