reactjs - 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"
任何帮助或建议将不胜感激。
解决方案
从评论解决:
if (typeof window !== 'undefined') {
// ....constants
}
在文件中constants.js
推荐阅读
- spring-boot - 如何从 Spring Security 中的 post 方法获取用户名?
- google-sheets - 基于子字符串的唯一事件列表 - Google 表格
- php - docker + nginx + node.js + php-fpm
- javascript - 如何在 JavaScript 中实现乘法器电路
- google-apps-script - 我的插件已获得 Google 的批准,但它仅适用于我雇主所在域的成员
- android - Firebase 数据库在用户打开应用程序时分配特定的用户 ID
- routing - Yii2 忽略新的控制器
- javascript - 嵌入 YouTube 视频的海报帧大于视频
- python - 熊猫从满足某些标准的最后一行填充?
- python - 用另一个字典的值替换字典的键以创建新字典