1

将 JSON 或 YAML 文件直接导入 Gatsby 页面时,我需要取消引用(交换JSON References )。Gatsby 非常擅长直接导入 JSON 文件(可能是由于一些底层的 webpack 加载器),但它似乎不处理 JSON refs,a lá "$ref": "../something.json

例如:

父.json

{
  "someRef" {
    "$ref": "./child.json"
  }
}

child.json

{
  "foo": "bar"
}

index.js

import {SomeJson} from './parent.json'

console.log(SomeJson) 

// Expected output: {someRef: {foo: bar}}
// Actual output: {someRef: {$ref: './child.json'}}

我想可能 Gatsby 使用的默认 JSON 加载器不允许 JSON 引用。美好的。但是不能扩展 webpack 配置来尝试添加这个功能吗?这是我的尝试:

盖茨比-node.js

exports.onCreateWebpackConfig = ({ actions }) => {
  actions.setWebpackConfig({
    module: {
      rules: [
        {
          test: /\.json$/,
          use: [
            {
              loader: '@cloudflare/json-schema-ref-loader'
            }
          ]
        }
      ]
    },
  })
}

@ cloudflare /json-schema-ref-loader库是一个 webpack 加载器,旨在遵循 refs。所以我认为这可以使用。

运行gatsby develop时,构建失败并显示:

Unexpected token m in JSON at position 0 while parsing near 'module.exports = {
 ...'
error Generating development SSR bundle failed

任何帮助将不胜感激。

4

0 回答 0