我想“盖茨比建立”并部署到一个子目录

时间:2020-08-06 02:52:40

标签: reactjs gatsby

我读了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

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

盖茨比(Gatsby)的pathPrefix仅在您的项目路线(网址)前添加一个字符串。您的部署脚本应处理公用文件夹在服务器上的最终位置。如果您真的想将gatsby项目发布到/public以外的其他地方(本地),则可能需要在gatsby中的fs中使用pathonPostBuild node.js将所有内容移至另一个目录。当时或撰写本文时,Gatsby尚不直接支持替代的构建目录,因此,使用gatsby development或gatsby服务在本地查看时,您只能靠自己了。

在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'));
};