我目前正在使用快递和车把的网站上工作。我收到一个问题,即应用程序会返回错误(如下),尽管一切都应该到位。
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
考虑到我被卡住并且我完全不知道我的代码有什么问题,任何帮助都非常感谢。谢谢!