Mam plik, controller.js podczas próby importowania funkcjonalności do app.js .

Utrzymuję błędy składniowe:

, spodziewany

Oczekiwany oświadczenie

Proste, aby naprawić, choć jednak, gdy naprawię jedną 10 pojawiają się, więc czy ktoś może spojrzeć na mój kod i zobaczyć, co robią źle?

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);
        }
    );
}
};
-1
Beep 27 czerwiec 2017, 12:44

3 odpowiedzi

Najlepsza odpowiedź

Dzieje się tak dlatego, że owinęłeś kod wewnątrz obiektu, {} Tagi.

Masz kilka opcji, moja sugestia jest użycie takich prototypów

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;

Następnie utworzysz instancję klasy w tym pliku, którego potrzebujesz (w tym przypadku app.js)

var myFunctions = new Functions();

Stamtąd możesz uzyskać dostęp do swoich metod za pomocą:

myFunctions.firstFunction();

Jeśli chciałeś jednak kontynuować sposób, w jaki już to zrobiłeś, powinieneś użyć takiej struktury obiektu

module.exports = {
   firstFunction : function()
   {
      //Function Body
   },
   secondFunction : function()
   {
      //Function Body
   }
}
2
Adrian 27 czerwiec 2017, 10:01

Musisz użyć notation obiekt wewnątrz obiektu (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(){}
};

A zależności eksportujące i hasła nie są tak naprawdę przydatne ...

0
Jonas Wilms 27 czerwiec 2017, 09:50

Wydanie z kodem jest:

Używałeś Var Inside Module.Export, a to oznacza, że deklarujesz Var Inside Export, który nie jest ważny,

module.export powinien być w formacie JSON.

Wypróbuj ten kod:

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);
            }
        );
    }
};
1
Vivek Doshi 27 czerwiec 2017, 09:54