我读了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
我在做什么错了?
答案 0 :(得分:1)
盖茨比(Gatsby)的pathPrefix
仅在您的项目路线(网址)前添加一个字符串。您的部署脚本应处理公用文件夹在服务器上的最终位置。如果您真的想将gatsby项目发布到/public
以外的其他地方(本地),则可能需要在gatsby中的fs
中使用path
和onPostBuild
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'));
};