0

我目前正在使用快递和车把的网站上工作。我收到一个问题,即应用程序会返回错误(如下),尽管一切都应该到位。

TypeError: compileAffiliates.start is not a function
at Object.<anonymous> (F:\More Stuff\Coding\Affiliate Site V2\index.js:65:53)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3

如下所示,我的 index.js 需要该文件compileAffiliates,然后在 ln65 处运行compileAffiliates.start()

const express = require("express");
const app = express();
const cors = require("cors");
const bodyParser = require("body-parser");
const passport = require("passport");
const cookieSession = require("cookie-session");
const hbs = require("express-handlebars");
const config = require("./config.json");
const compileAffiliates = require("./compileAffiliates");
require("./passport-setup");

app.use(cors());

app.use(bodyParser.urlencoded({extended: false}));

app.use(bodyParser.json());

app.use(express.static(__dirname + "/public/"));

app.set("view engine", "hbs");

app.engine("hbs", hbs( {
    extname: 'hbs',
    defaultView: 'default'
}));

app.use(cookieSession({
    name: "Affiliate",
    keys: ["key1","key2"]
}));

const isLogged = (req, res, next) => {
    if (req.user && req.user.id === "") {
        next();
    } else {
        res.redirect("/admin/failed");
    }
};

app.use(passport.initialize());
app.use(passport.session());

app.get("/", function(req, res, next) {
    res.render("main", {config: config});
});
app.get("/admin/failed", (req, res) => res.send("Unauthorized"));
app.get("/admin/success", isLogged, (req, res) => res.send(`Admin Panel\n${req.user.id}`));

app.get("/admin/auth/google",
    passport.authenticate('google', { scope: ['email', 'profile']}));

app.get("/admin/auth/google/callback",
    passport.authenticate('google', { failureRedirect: '/admin/failed' }),
    function(req, res) {
        // Successful authentication, redirect home.
        res.redirect("/admin/success");
    });

app.get("/admin/logout", (req, res) => {
    req.session = null;
    req.logout();
    res.redirect("/");
});

config.websiteAffiliates.output = compileAffiliates.start();

app.listen(3000, () => console.log("[APP] Listening to port 3000"));

我的compileAffiliates.js样子是这样的:

let config = require("./config");

function start() {
    let output = ``;

    Object.keys(config.websiteAffiliates).forEach(key => {
        output += `
                <div class=col-md-3>
                    <div class="site-affiliate-container">
                        <img src="images/${config.websiteAffiliates[key].imgSrc}">
                        <div class="row row-style">
                            <div class="col col-style">
                                <span>${config.websiteAffiliates[key].refBonus}</span>
                            </div>
                            <div class="col col-style">
                                <span>Code ${config.websiteAffiliates[key].refCode}</span>
                            </div>
                        </div>
                        <div class="row row-style">
                            <button class="button button-type"><a href="${config.websiteAffiliates[key].imgLink}">Use Code</a></button>
                        </div>
                    </div>
                </div>
         `
    });

    return output;
}

并且 config.json 有这个对象:

"websiteAffiliates": {
    "1": {
      "refCode": "Code",
      "imgSrc": "1.png",
      "refBonus": "+5%",
      "imgLink": ""
    },
    "2": {
      "refCode": "Another Code",
      "imgSrc": "2.png",
      "refBonus": "+10%",
      "imgLink": ""
    }
  }

我完全不知道为什么会收到compileAffiliates.start()函数不存在的错误。我不知道如何修复它,看起来它应该可以工作,但它没有。我的文件系统应该是这样的:

Project
  -public
  -views
  compileAffiliates.js
  index.js
  config.json

考虑到我被卡住并且我完全不知道我的代码有什么问题,任何帮助都非常感谢。谢谢!

4

0 回答 0