首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatsby构建时错误- WebpackError: TypeError: isRedirect不是函数

Gatsby构建时错误- WebpackError: TypeError: isRedirect不是函数
EN

Stack Overflow用户
提问于 2022-01-08 13:05:01
回答 1查看 244关注 0票数 -1

自从我用这个在login.js上尝试了受保护的路线之后

代码语言:javascript
复制
    <Router basepath="/">
            <PrivateRoute path="/edit" />
        </Router>

edit.js上的这个

代码语言:javascript
复制
useEffect(() => {
    // ... some code here

    getEscritos();
    if (!user && location.pathname !== `/login`) {
        navigate("/login");
        return null;
    }
}, []);

我不能再建造它了。错误是:

窗口未定义为

虽然在当地它运行的很好。一切都正常。

然后我在研究后在gatsby-node.js上尝试了这个

代码语言:javascript
复制
exports.onCreateWebpackConfig = ({ stage, loaders, 
actions, getConfig }) => {
if (stage === "build-html" || stage === "develop-html") {
actions.setWebpackConfig({
  module: {
    rules: [
      {
        test: /reach-router/,
        use: loaders.null(),
      },
    ],
  },
});
externals: getConfig().externals.concat(function (
  context,
  request,
  callback
) {
  const regex = /^@?firebase(\/(.+))?/;
  // exclude firebase products from being bundled, so 
  they will be loaded using require() at runtime.
  if (regex.test(request)) {
    return callback(null, "commonjs " + request); // <- 
   use commonjs!
    }
  callback();
  });
 }

};

现在的错误是:

WebpackError: TypeError: isRedirect不是函数

我不知道该怎么办..。

这是存储库,如果有什么帮助的话。

提前谢谢你抽出时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-10 05:58:45

您需要将Firebase的使用和初始化封装在以下条件中:

代码语言:javascript
复制
if(typeof window !== 'undefined')

在SSR (服务器端呈现)中触发多个Firebase实例。

应用于您的escritos.js

代码语言:javascript
复制
  if(typeof window !== 'undefined'){
    const db = getFirestore(app);
    const escritosColRef = collection(db, "escritos");
  }

同样也适用于(第31项)等等.

useEffect钩子中的引用(带有空的deps[])应该在没有window条件的情况下工作,因为它们是在DOM树上被触发的,所以不会破坏[]。如果错误仍然存在,也尝试包装它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档