导出节点会导致语法错误

时间:2017-06-27 09:44:36

标签: javascript node.js

我在尝试将功能导入 app.js 时有一个 controller.js 文件。

我不断收到语法错误:

  

,预期

     

期待的声明

很容易修复我但是当我修复了一个10以上的弹出窗口时,那么有人可以查看我的代码,看看有什么问题吗?

app.js

Promise.all([controller.firstFunction(), controller.secondFunction()]) .then(controller.thirdFunction);

controller.js

module.exports = {
    var express = require('express');
// var rp = require('request-promise');
var app = express();
// var request = require('request');
var nodePardot = require('node-pardot');
// Credential's for pardot API
var password = ';lu.88';
var userkey = 'kol;';
var emailAdmin = 'j.j@jj.co.uk';
//
// // Start the server
// app.listen(port);
// app.use(bodyParser.json()); // support json encoded bodies
// app.use(bodyParser.urlencoded({extended: true})); // support encoded bodies
// console.log('Test server started! At http://localhost:' + port); // Confirms server start
//
// app.use('/', router);


var firstFunction = function () {
    return new Promise(function (resolve) {
        setTimeout(function () {
            app.post('/back-end/test', function (req, res) {
                console.log(req.body);
                var login = req.body.LoginEmail;
                res.send(login);
                resolve({
                    data_login_email: login
                });
            });
            console.error("First done");
        }, 2000);
    });
};

var secondFunction = function () {
    return new Promise(function (resolve) {
        setTimeout(function () {
            nodePardot.PardotAPI({
                userKey: userkey,
                email: emailAdmin,
                password: password,
                DEBUG: false
            }, function (err, client) {
                if (err) {
                    // Authentication failed
                    console.error("Authentication Failed", err);
                } else {
                    // Authentication successful
                    var api_key = client.apiKey;
                    console.log("Authentication successful !", api_key);
                    resolve({data_api: api_key});
                }
            });
            console.error("Second done");
        }, 2000);
    });
};

function thirdFunction(result) {
    return new Promise(function () {
            setTimeout(function () {
                var headers = {
                    'User-Agent': 'Super Agent/0.0.1',
                    'Content-Type': 'application/x-www-form-urlencoded'
                };
// Configure the request
                var api = result[1].data_api;
                var login_email = result[0].data_login_email;
                var options = {
                    url: 'https://pi.pardot.com/api/prospect/version/4/do/read',
                    method: 'POST',
                    headers: headers,
                    form: {
                        'email': login_email,
                        'user_key': userkey,
                        'api_key': api
                    },
                    json: true // Automatically stringifies the body to JSON
                };

// Start the request
                rp(options)
                    .then(function (parsedBody) {
                        console.error(login_email, "Is a user, login pass!");

                    })
                    .catch(function (err) {
                        console.error("fail no such user");
                        // res.status(400).send()

                    });
                console.error("Third done");
            }, 3000);
        }
    );
}
};

3 个答案:

答案 0 :(得分:2)

这是因为您将代码包装在对象{}标记内。

你有几个选择,我的建议是使用像这样的Prototypes

var express = require('express');
// var rp = require('request-promise');
var app = express();
// var request = require('request');
var nodePardot = require('node-pardot');
// Credential's for pardot API
var password = ';lu.88';
var userkey = 'kol;';
var emailAdmin = 'j.j@jj.co.uk';
//
// // Start the server
// app.listen(port);
// app.use(bodyParser.json()); // support json encoded bodies
// app.use(bodyParser.urlencoded({extended: true})); // support encoded bodies
// console.log('Test server started! At http://localhost:' + port); // Confirms server start
//
// app.use('/', router);

function Functions(){};


Functions.prototype.firstFunction = function () {
    return new Promise(function (resolve) {
        setTimeout(function () {
            app.post('/back-end/test', function (req, res) {
                console.log(req.body);
                var login = req.body.LoginEmail;
                res.send(login);
                resolve({
                    data_login_email: login
                });
            });
            console.error("First done");
        }, 2000);
    });
};

Functions.prototype.secondFunction = function () {
    return new Promise(function (resolve) {
        setTimeout(function () {
            nodePardot.PardotAPI({
                userKey: userkey,
                email: emailAdmin,
                password: password,
                DEBUG: false
            }, function (err, client) {
                if (err) {
                    // Authentication failed
                    console.error("Authentication Failed", err);
                } else {
                    // Authentication successful
                    var api_key = client.apiKey;
                    console.log("Authentication successful !", api_key);
                    resolve({data_api: api_key});
                }
            });
            console.error("Second done");
        }, 2000);
    });
};

Functions.prototype.thirdFunction(result) {
    return new Promise(function () {
            setTimeout(function () {
                var headers = {
                    'User-Agent': 'Super Agent/0.0.1',
                    'Content-Type': 'application/x-www-form-urlencoded'
                };
// Configure the request
                var api = result[1].data_api;
                var login_email = result[0].data_login_email;
                var options = {
                    url: 'https://pi.pardot.com/api/prospect/version/4/do/read',
                    method: 'POST',
                    headers: headers,
                    form: {
                        'email': login_email,
                        'user_key': userkey,
                        'api_key': api
                    },
                    json: true // Automatically stringifies the body to JSON
                };

// Start the request
                rp(options)
                    .then(function (parsedBody) {
                        console.error(login_email, "Is a user, login pass!");

                    })
                    .catch(function (err) {
                        console.error("fail no such user");
                        // res.status(400).send()

                    });
                console.error("Third done");
            }, 3000);
        }
    );
}

module.exports = Functions;

然后,您将在您需要的文件中创建该类的实例(在本例中为app.js)

var myFunctions = new Functions();

从那里您可以使用以下方式访问您的方法:

myFunctions.firstFunction();

如果你想继续这样做,你应该使用像这样的对象结构

module.exports = {
   firstFunction : function()
   {
      //Function Body
   },
   secondFunction : function()
   {
      //Function Body
   }
}

答案 1 :(得分:1)

代码问题是:

你在module.export中使用var,这意味着你在导出中声明var无效,

  

module.export应该是json格式。

试试这段代码:

var express = require('express');
// var rp = require('request-promise');
var app = express();
// var request = require('request');
var nodePardot = require('node-pardot');
// Credential's for pardot API
var password = ';lu.88';
var userkey = 'kol;';
var emailAdmin = 'j.j@jj.co.uk';
//
// // Start the server
// app.listen(port);
// app.use(bodyParser.json()); // support json encoded bodies
// app.use(bodyParser.urlencoded({extended: true})); // support encoded bodies
// console.log('Test server started! At http://localhost:' + port); // Confirms server start
//
// app.use('/', router);

module.exports = {
    firstFunction : function () {
        return new Promise(function (resolve) {
            setTimeout(function () {
                app.post('/back-end/test', function (req, res) {
                    console.log(req.body);
                    var login = req.body.LoginEmail;
                    res.send(login);
                    resolve({
                        data_login_email: login
                    });
                });
                console.error("First done");
            }, 2000);
        });
    },
    secondFunction : function () {
        return new Promise(function (resolve) {
            setTimeout(function () {
                nodePardot.PardotAPI({
                    userKey: userkey,
                    email: emailAdmin,
                    password: password,
                    DEBUG: false
                }, function (err, client) {
                    if (err) {
                        // Authentication failed
                        console.error("Authentication Failed", err);
                    } else {
                        // Authentication successful
                        var api_key = client.apiKey;
                        console.log("Authentication successful !", api_key);
                        resolve({data_api: api_key});
                    }
                });
                console.error("Second done");
            }, 2000);
        });
    },
    thirdFunction : function(result) {
        return new Promise(function () {
                setTimeout(function () {
                    var headers = {
                        'User-Agent': 'Super Agent/0.0.1',
                        'Content-Type': 'application/x-www-form-urlencoded'
                    };
        // Configure the request
                    var api = result[1].data_api;
                    var login_email = result[0].data_login_email;
                    var options = {
                        url: 'https://pi.pardot.com/api/prospect/version/4/do/read',
                        method: 'POST',
                        headers: headers,
                        form: {
                            'email': login_email,
                            'user_key': userkey,
                            'api_key': api
                        },
                        json: true // Automatically stringifies the body to JSON
                    };

        // Start the request
                    rp(options)
                        .then(function (parsedBody) {
                            console.error(login_email, "Is a user, login pass!");

                        })
                        .catch(function (err) {
                            console.error("fail no such user");
                            // res.status(400).send()

                        });
                    console.error("Third done");
                }, 3000);
            }
        );
    }
};

答案 2 :(得分:0)

您需要在对象(module.exports)中使用对象表示法

var express = require('express');
// var rp = require('request-promise');
var app = express();
// var request = require('request');
var nodePardot = require('node-pardot');
// Credential's for pardot API
var password = ';lu.88';
var userkey = 'kol;';
var emailAdmin = 'j.j@jj.co.uk';

module.exports = {
 firstFunction() {
   return new Promise(function(){
    ...
   });
 },
 secondFunction(){},
 thirdFunction(){}
};

并导出依赖项和密码并不真正有用......