【问题标题】:where is the real quasar ssr express server?真正的quasar ssr express服务器在哪里?
【发布时间】:2020-08-26 09:39:15
【问题描述】:

我正在构建一个 quasar 和 vue.js 应用程序,我想添加一个带有 express 服务器的 MongoDB API,在 /ssr-src/ 目录中,有一个 index.js 文件,其中包含基本的 express 应用程序路由:

/*
 * This file runs in a Node context (it's NOT transpiled by Babel), so use only
 * the ES6 features that are supported by your Node version. https://node.green/
 *
 * WARNING!
 * If you import anything from node_modules, then make sure that the package is specified
 * in package.json > dependencies and NOT in devDependencies
 *
 * Note: This file is used only for PRODUCTION. It is not picked up while in dev mode.
 *   If you are looking to add common DEV & PROD logic to the express app, then use
 *   "src-ssr/extension.js"
 */
console.log("got here!") // I added
const express = require("express"),
  compression = require("compression");

const ssr = require("quasar-ssr"),
  extension = require("./extension"),
  app = express(),
  port = process.env.PORT || 3000;

const serve = (path, cache) =>
  express.static(ssr.resolveWWW(path), {
    maxAge: cache ? 1000 * 60 * 60 * 24 * 30 : 0
  });

// gzip
app.use(compression({ threshold: 0 }));

// serve this with no cache, if built with PWA:
if (ssr.settings.pwa) {
  app.use("/service-worker.js", serve("service-worker.js"));
}

// serve "www" folder
app.use("/", serve(".", true));

// we extend the custom common dev & prod parts here
extension.extendApp({ app, ssr });

// this should be last get(), rendering with SSR
app.get("*", (req, res) => {
  res.setHeader("Content-Type", "text/html");
  // SECURITY HEADERS
  // read more about headers here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
  // the following headers help protect your site from common XSS attacks in browsers that respect headers
  // you will probably want to use .env variables to drop in appropriate URLs below,
  // and potentially look here for inspiration:
  // https://ponyfoo.com/articles/content-security-policy-in-express-apps

  // https://developer.mozilla.org/en-us/docs/Web/HTTP/Headers/X-Frame-Options
  // res.setHeader('X-frame-options', 'SAMEORIGIN') // one of DENY | SAMEORIGIN | ALLOW-FROM https://example.com

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
  // res.setHeader('X-XSS-Protection', 1)

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
  // res.setHeader('X-Content-Type-Options', 'nosniff')

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
  // res.setHeader('Access-Control-Allow-Origin', '*') // one of '*', '<origin>' where origin is one SINGLE origin

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control
  // res.setHeader('X-DNS-Prefetch-Control', 'off') // may be slower, but stops some leaks

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
  // res.setHeader('Content-Security-Policy', 'default-src https:')

  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox
  // res.setHeader('Content-Security-Policy', 'sandbox') // this will lockdown your server!!!
  // here are a few that you might like to consider adding to your CSP
  // object-src, media-src, script-src, frame-src, unsafe-inline

  ssr.renderToString({ req, res }, (err, html) => {
    if (err) {
      if (err.url) {
        res.redirect(err.url);
      } else if (err.code === 404) {
        console.log(404,'!!')
        res.status(404).send("404 | Page Not Found foo bar"); // I added foo bar
      } else {
        // Render Error Page or Redirect
        res.status(500).send("500 | Internal Server Error");
        if (ssr.settings.debug) {
          console.error(`500 on ${req.url}`);
          console.error(err);
          console.error(err.stack);
        }
      }
    } else {
      res.send(html);
    }
  });
});

app.listen(port, () => {
  console.log(`Server listening at port ${port}`);
});

但是当我运行 $ queser dev -m ssr 时,我的任何日志或更改都没有发生 Server listening at port ${port} 也没有显示。 需要你的帮助!

类星体版本 1.0.7 Debian 10

【问题讨论】:

    标签: mongodb express vue.js quasar-framework quasar


    【解决方案1】:
    src-ssr/index.js 
    

    从评论中看,它似乎仅适用于生产,在开发模式下不可见。 "注意:此文件仅用于 PRODUCTION"

    您可能想改用 src-ssr/extension.js。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2021-10-08
      • 2020-10-23
      • 2021-12-28
      • 1970-01-01
      相关资源
      最近更新 更多