【问题标题】:Is this valid node.js require? "const { EXAMPLE.SOMETHING } = require ('example')"这是有效的 node.js 要求吗? “const {EXAMPLE.SOMETHING } = 要求('example')”
【发布时间】:2020-01-20 14:33:32
【问题描述】:

我今天正在寻找一个在文档中使用以下语法的包:

const { BLOCKS.EMBEDDED_ENTRY } = require ('@contentful/rich-text-types')

当我在我的项目中尝试它时,我得到了一个“unexpected token '.'”的错误,所以我不确定是我做错了什么还是作者犯了一个错误。

这是一个有效的要求吗?

我以前没有见过这样写的 requires,所以我尝试搜索“node dot require”和其他一些可能的关键字(不知道该怎么称呼它),但没有任何结果。

更多示例

我在多个地方看到 Contentful 使用这种语法,所以这似乎不是一个错误。

https://github.com/contentful/rich-text/tree/master/packages/rich-text-html-renderer

https://github.com/contentful/rich-text/tree/master/packages/gatsby-transformer-contentful-richtext

【问题讨论】:

    标签: node.js reactjs gatsby


    【解决方案1】:

    这不是valid ES6 destructuring assignment,因此可能是文档中的错误。

    他们可能想导入BLOCKS,然后使用BLOCKS.something

    【讨论】:

      【解决方案2】:

      我相信你在谈论这个文档:https://www.contentful.com/developers/docs/tutorials/general/getting-started-with-rich-text-field-type/#use-cases-around-rendering-the-api-response

      查看代码我会说他们使用错误:

      import { BLOCKS.EMBEDDED_ENTRY } from '@contentful/rich-text-types';

      而不是

      import { BLOCKS } from '@contentful/rich-text-types';

      因为如果您再看一下代码,您会看到:BLOCKS.PARAGRAPH 他们正在使用BLOCKS,就像他们导入它一样

      【讨论】:

      • 这就是我的想法,但我在多个包的多个地方看到了相同的语法。看起来他们不会犯那么多次错误。请参阅:github.com/contentful/rich-text/tree/master/packages/… ``` import { BLOCKS.PARAGRAPH, MARKS.BOLD } from '@contentful/rich-text-types';从“@contentful/rich-text-html-renderer”导入 { documentToHtmlString }; ```
      • 是的,这有点奇怪,我从未见过这种导入语法,我怀疑它会起作用。他们可能正在使用自动过程来生成受错误影响的文档。尝试在他们的 github 上打开一个问题。
      【解决方案3】:

      我相信 OP 指的是 Contentful 的 Javascript SDK 文档。特别是 https://www.contentful.com/developers/docs/javascript/tutorials/rendering-contentful-rich-text-with-javascript/ 引用的块

      供您参考:

      import * as contentful from 'contentful';
      import { documentToHtmlString } from '@contentful/rich-text-html-renderer'; // <--- this was a problem for me
      
      const client = contentful.createClient({
        space: '<space_id>',
        environment: '<environment_id>', // defaults to 'master' if not set
        accessToken: '<content_delivery_api_key>'
      });
      
      client.getEntry('<entry_id>'); // asynchronous, returns promise
      
      ...
      
       client
              .getEntry('<entry_id>')
              .then(entry => {
                const rawRichTextField = entry.fields.body;
                return documentToHtmlString(rawRichTextField);
              })
              .then(renderedHtml => {
                // do something with html, like write to a file
                console.log(renderedHtml);
                document.getElementById('rich-text-body').innerHTML = renderedHtml;
              })
              .catch(error => console.log(error));
      

      在我的 Node 应用程序(版本 11.15.0)中运行上述导入块时,导入语法出现错误。

      但是,以下导入语法对我有用:

      const documentToHtmlString = require("@contentful/rich-text-html-renderer").documentToHtmlString
      
      const htmlString = documentToHtmlString(rawRichTextField)
      
      console.log(htmlString)
      

      【讨论】:

        猜你喜欢
        • 2011-10-17
        • 1970-01-01
        • 2011-07-05
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 2017-10-10
        相关资源
        最近更新 更多