【问题标题】:react-router-sitemap window is not definedreact-router-sitemap 窗口未定义
【发布时间】:2020-09-18 09:12:03
【问题描述】:

我正在尝试使用此站点地图生成器文件为我的反应网站创建站点地图。

require("@babel/register")({
  extends: "./src/.babelrc",
});

require.extensions[".css"] = function() {
  return null;
};
const router = require("./Routes");

const Sitemap = require("react-router-sitemap").default;

function generateSitemap() {
  return new Sitemap(router)
    .build("https://example.org")
    .save("./public/sitemap.xml");
}

generateSitemap();

这是我的 .babelrc 文件。

{
  "exclude": ["node_modules/**/*"],
  "presets": ["@babel/preset-env", "@babel/preset-react"],
  "plugins": [
    "babel-plugin-react-css-modules",
    "transform-class-properties",
    [
      "module-resolver",
      {
        "cwd": "babelrc",
        "root": ["./src"]
      }
    ]
  ]
}

但我得到一个似乎来自节点模块内部的ReferenceError: window is not defined?我在我的 babelrc 文件中尝试了忽略和排除,但似乎并没有真正忽略节点模块文件。代码使用babel-node sitemap-generator.js 执行

以下是完整的错误输出。

ReferenceError: window is not defined
    at Object.<anonymous> (/Users/jackseeburger/Desktop/quirkshop/kyron-education-mvp/client/node_modules/react-file-picker/lib/index.js:1:268)
    at Module._compile (internal/modules/cjs/loader.js:1185:30)
    at Module._compile (/Users/jackseeburger/Desktop/quirkshop/kyron-education-mvp/client/node_modules/pirates/lib/index.js:99:24)
    at Module._compile (/Users/jackseeburger/Desktop/quirkshop/kyron-education-mvp/client/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:1205:10)
    at newLoader (/Users/jackseeburger/Desktop/quirkshop/kyron-education-mvp/client/node_modules/pirates/lib/index.js:104:7)
    at Object.newLoader [as .js] (/Users/jackseeburger/Desktop/quirkshop/kyron-education-mvp/client/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:1034:32)
    at Function.Module._load (internal/modules/cjs/loader.js:923:14)
    at Module.require (internal/modules/cjs/loader.js:1074:19)

【问题讨论】:

    标签: reactjs react-native react-router babeljs


    【解决方案1】:

    这实际上取决于您在代码中所做的事情,但就我而言,我能够通过将全局寡妇变量设置为空对象来欺骗依赖项。 换句话说,将这一行放在文件的顶部:

    global.window = {};
    

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 2023-02-04
      • 1970-01-01
      • 2016-07-31
      • 2021-02-02
      • 2017-10-04
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多