【问题标题】:I want to "Gatsby Build" and deploy to a subdirectory我想“盖茨比构建”并部署到子目录
【发布时间】:2020-08-06 02:52:40
【问题描述】:

我阅读了https://www.gatsbyjs.org/docs/path-prefix/ 并将以下内容添加到 gatsby-configs.js。

{
  pathPrefix: "/modules/custom/gatsby/gatsby-shopify-starter/public",
},

而且,我在终端上执行sudo gatsby build --prefix-paths。 但是,我收到了这条错误消息。

ERROR

The "path" argument must be of type string. Received an instance of Object

Error: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type s  tring. Received an instance of Object

我做错了什么?

【问题讨论】:

    标签: reactjs gatsby


    【解决方案1】:

    Gatsby 的 pathPrefix 只会在您的项目路由(url)前添加一个字符串。您的部署脚本应处理公用文件夹在您的服务器上的最终位置。如果你真的想将你的 gatsby 项目发布到 /public 以外的其他地方(本地)你可能需要做一些事情,比如在 gatsby-node.js 中的 onPostBuild 中使用 fspath 将所有内容移到另一个目录。在撰写本文时,Gatsby 不直接支持替代构建目录,因此当您使用 gatsby develop 或 gatsby serve 在本地查看此内容时,您需要自己动手。

    在 gatsby-node.js 中尝试类似的方法,但更改路径以满足您的需求。此示例会将您的项目发布到/public/blog,而不是默认的/public,这只是一个概念证明,但我对其进行了测试,它可以工作:

    const path = require('path');
    const fs = require('fs');
    
    exports.onPostBuild = function() {
      fs.renameSync(path.join(__dirname, 'public'), path.join(__dirname, 'public-blog'));
    
      fs.mkdirSync(path.join(__dirname, 'public'));
    
      fs.renameSync(path.join(__dirname, 'public-blog'), path.join(__dirname, 'public', 'blog'));
    };
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2022-07-01
      • 2021-01-21
      • 2019-09-29
      • 2014-10-20
      相关资源
      最近更新 更多