首页 > 解决方案 > ReferenceError:没有使用 react-router-sitemap 定义窗口

问题描述

我正在尝试使用react-router-sitemap创建反应应用程序的站点地图。以下是我的配置:

站点地图-builder.js

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

require.extensions[".css"] = function() {
  return null
}

const router = require("./src/routes/index").default
const Sitemap = require("react-router-sitemap").default
new Sitemap(router).build("http://localhost:3000").save("./sitemap.xml")

.babelrc 文件

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

错误我收到此错误

basic@0.1.0 sitemap /home/ramneet/frontend
> node ./sitemap-builder.js

/home/ramneet/frontend/src/shared/constants.js:330
var redirectUrl = "".concat(window.location.origin, "/secure/route/test&response_type=token");
                            ^

ReferenceError: window is not defined
    at Object.window (/home/ramneet/frontend/src/shared/constants.js:214:29)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Module._compile (/home/ramneet/frontend/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Object.newLoader [as .js] (/home/ramneet/frontend/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! basic@0.1.0 sitemap: `node ./sitemap-builder.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the basic@0.1.0 sitemap script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/.npm/_logs/2019-09-24T06_52_23_569Z-debug.log

以下是引发错误的该文件的一些内容:

export let redirectUrl = `${window.location.origin}/secure/route/test&response_type=token`
export let windowLink = window.location.origin

我通过在 package.json 中添加命令来运行站点地图

"sitemap": "node ./sitemap-builder.js"

任何帮助或建议将不胜感激。

标签: reactjsbabeljssitemapreact-router-v4

解决方案


从评论解决:

if (typeof window !== 'undefined') {
    // ....constants
}

在文件中constants.js


推荐阅读