timestamp.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.uniTimestampMiddleware = void 0;
  7. const url_1 = require("url");
  8. const path_1 = __importDefault(require("path"));
  9. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  10. function uniTimestampMiddleware(server) {
  11. return async function timestampMiddleware(req, _, next) {
  12. // 当页面被作为组件引用时,会导致history刷新该页面直接显示js代码,因为该页面已被缓存为了module,
  13. // https://github.com/vitejs/vite/blob/702d50315535c189151c67d33e4a22124f926bed/packages/vite/src/node/server/transformRequest.ts#L52
  14. // /pages/tabBar/API/API
  15. let { url } = req;
  16. if (url) {
  17. const base = server.config.base;
  18. const parsed = (0, url_1.parse)(url);
  19. let newUrl = url;
  20. if ((parsed.pathname || '/').startsWith(base)) {
  21. newUrl = newUrl.replace(base, '/');
  22. }
  23. if (!path_1.default.extname(newUrl) &&
  24. !newUrl.endsWith('/') &&
  25. !newUrl.includes('?')) {
  26. const module = await server.moduleGraph.getModuleByUrl(newUrl);
  27. if (module && module.file && uni_cli_shared_1.EXTNAME_VUE_RE.test(module.file)) {
  28. // /pages/tabBar/API/API => /pages/tabBar/API/API?__t__=time
  29. req.url = url + '?__t__=' + Date.now();
  30. }
  31. }
  32. }
  33. next();
  34. };
  35. }
  36. exports.uniTimestampMiddleware = uniTimestampMiddleware;