Javascript react路由器站点地图中未定义Require
根据官方文档,sitemap-builder.js文件应如下所示:Javascript react路由器站点地图中未定义Require,javascript,node.js,reactjs,npm,node-modules,Javascript,Node.js,Reactjs,Npm,Node Modules,根据官方文档,sitemap-builder.js文件应如下所示: require('babel-register'); const router = require('./router').default; const Sitemap = require('../').default; ( new Sitemap(router) .build('http://my-site.ru') .save('./sitemap.xml') ); const
require('babel-register');
const router = require('./router').default;
const Sitemap = require('../').default;
(
new Sitemap(router)
.build('http://my-site.ru')
.save('./sitemap.xml')
);
const { default: Sitemap } = pkg
然而,当我运行npm运行站点地图时,我得到一个错误,该错误要求未定义。
我读到你不能在react中使用require,所以我尝试了导入语句
import Sitemap from 'react-router-sitemap'
但这里我得到了另一个错误,站点地图不是构造函数
My sitemap-builder.js:
import pkg from 'react-router-sitemap';
const { Sitemap } = pkg;
const router = [
{
path: '/',
},
{
path: '/pravila',
},
{
path: '/users/:uid',
},
{
path: '/users/:uid/podcats/:pid',
},
{
path: '/post',
},
{
path: '/myprofile',
}
]
(
new Sitemap(router)
.build('https://example.com/')
.save('./sitemap.xml')
);
My package.json:
{
"name": "podcasts",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"firebase": "^7.14.4",
"react": "^16.13.1",
"react-collapsible": "^2.8.0",
"react-copy-to-clipboard": "^5.0.2",
"react-dom": "^16.13.1",
"react-infinite-scroll-component": "^5.0.5",
"react-infinite-scroller": "^1.2.4",
"react-player": "^2.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "3.4.1",
"react-video-thumbnail": "^0.1.3",
"reactjs-popup": "^1.5.0"
},
"type": "module",
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"predeploy": "npm run build",
"deploy": "firebase build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"sitemap": "babel-node src/sitemap/generator.js"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@babel/core": "^7.10.2",
"@babel/node": "^7.10.1",
"@babel/preset-env": "^7.10.2",
"@babel/register": "^7.10.1",
"react-router-sitemap": "^1.2.0"
}
}
您需要它的
default
,您可以像这样分解默认属性:
require('babel-register');
const router = require('./router').default;
const Sitemap = require('../').default;
(
new Sitemap(router)
.build('http://my-site.ru')
.save('./sitemap.xml')
);
const { default: Sitemap } = pkg
您是否尝试过对默认值进行解构<代码>从“react router Sitemap”导入{default:Sitemap}感谢您的帮助,但是现在我得到了另一个错误ReferenceError:在初始化之前无法访问“router”你能更新代码吗?还是完全相同?更新了sitemap-builder.js将路由和sitemap组合在一个文件中并使用了建议的更改hmm我的建议是
导入{default:sitemap}
,但我看不到它