प्रोबोट दस्तावेज़ीकरण में उल्लेख किया गया है कि मैं वैनिला एक्सप्रेस सर्वर की तरह मार्गों का उपयोग कर सकता हूं।

मैं इन मार्गों के लिए CORS मूल शीर्षलेख सेट करना चाहता हूं। एक वेनिला एक्सप्रेस सर्वर में मैं cors पैकेज का उपयोग करूंगा:

const cors = require('cors')

...

app.use(cors())

लेकिन probot ऐप में फ़ंक्शन नहीं है use .

module.exports = app => {
  app.use(cors(corsOptions));
// ...

त्रुटि का कारण बनता है:

ERROR (event): app.use is not a function
    TypeError: app.use is not a function

मैं कॉर्स कैसे सेट करूं?

1
EliteRaceElephant 10 सितंबर 2020, 03:36

1 उत्तर

सबसे बढ़िया उत्तर

आपको ऐप को प्रोग्रामेटिक रूप से शुरू करना होगा। इस तरह आप प्रोबोट लोड होने के बाद एक्सप्रेस ऐप तक पहुंच सकते हैं लेकिन प्रोबोट चलने से पहले:

const cors = require("cors");
const bodyParser = require("body-parser");
const { Probot } = require("probot");
const { corsOptions } = require("./src/util/init-server.js");
const endpoint = require("./src/controller/endpoint");
const { handleWhatever } = require("./src/controller/controller");


// https://github.com/probot/probot/blob/master/src/index.ts#L33
const probot = new Probot({
  id: process.env.APP_ID,
  port: process.env.PORT,
  secret: process.env.WEBHOOK_SECRET,
  privateKey: process.env.PRIVATE_KEY,
  webhookProxy: process.env.WEBHOOK_PROXY_URL,
});


const probotApp = app => {
  /** Post a comment on new issue */
  app.on("issues.opened", async context => {
    const params = context.issue({ body: "Hello World!" });
    return context.github.issues.createComment(params);
  });

  /** --- Express HTTP endpoints --- */
  const router = app.route("/api");
  router.use(cors(corsOptions)); // set CORS here
  router.use(bodyParser.json());
  router.use(bodyParser.urlencoded({ extended: true }));
  // router.set("trust proxy", true);
  // router.use(require('express').static('public')); // Use any middleware
  router.get("/ping", (req, res) => res.send("Guten Tag! " + new Date()));
  router.post(endpoint.handleWhatever , handleWhatever );
};


/** --- Initialize Express app by loading Probot --- */
probot.load(probotApp);

/* ############## Express instance ################ */
const app = probot.server;
const log = probot.log;
app.set("trust proxy", true);

/** --- Run Probot after setting everything up --- */
Probot.run(probotApp);

यहां कुछ गिटहब मुद्दे और दस्तावेज़ हैं जिन्होंने मुझे मेरे प्रश्न का उत्तर देने में मदद की:

3
EliteRaceElephant 10 सितंबर 2020, 06:45