类型错误:(0,标记__WEBPACK_IMPORTED_MODULE_7__.default)不是函数

Min*_*ide 5 reactjs next.js

我已将我的项目从 Next.js 10 更新到 12。在所有更改中,我的一个部分停止工作,特别是从 Markdown 文件生成页面的部分。我不断收到错误:

\n
TypeError: (0 , marked__WEBPACK_IMPORTED_MODULE_7__.default) is not a function\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

我的 Next.js Javascript 模板是:

\n
TypeError: (0 , marked__WEBPACK_IMPORTED_MODULE_7__.default) is not a function\n
Run Code Online (Sandbox Code Playgroud)\n

我当前的 package.json 是这样的:

\n
/** @format */\nimport fs from \'fs\';\nimport path from \'path\';\nimport matter from \'gray-matter\';\nimport Head from \'next/head\';\nimport marked from \'marked\';\nimport { defaultLocale } from \'../../i18n.json\';\nimport useTranslation from \'next-translate/useTranslation\';\n\nimport Header from \'../../components/ui/Header/Header\';\nimport Footer from \'../../components/ui/Footer/Footer\';\nimport Main from \'../../components/ui/Main/Main\';\n\nconst postsDirectory = path.join(process.cwd(), \'__docs\');\n\nexport default function Doc({ htmlString, data }) {\n  let { t } = useTranslation();\n\n  return (\n    <>\n      <Head>\n        <title>\n          {data.title} \xe2\x80\x93 {t(\'common:version\', { version: data.version })}\n        </title>\n        <link rel=\'icon\' href=\'/favicon.png\' />\n      </Head>\n\n      <Header background=\'1\' elevation=\'4\' />\n      <Main css=\'padding--16 display--grid\'>\n        <h1>{data.title}</h1>\n        <div\n          dangerouslySetInnerHTML={{ __html: htmlString }}\n          className=\'color--gray line-height--24\'\n        />\n        <hr />\n        <p className=\'color--gray line-height--24\'>\n          {t(\'common:version\', { version: data.version })}. Last update:{\' \'}\n          {data.date}\n        </p>\n      </Main>\n      <Footer />\n    </>\n  );\n}\n\nexport const getStaticPaths = async ({ locales }) => {\n  let paths = [];\n\n  const docs = fs.readdirSync(\'__docs\');\n  console.log(docs);\n\n  for (let slug of docs) {\n    for (let locale of locales) {\n      let fullpath = path.join(\n        postsDirectory,\n        slug,\n        locale === defaultLocale ? \'index.md\' : `index.${locale}.md`\n      );\n\n      if (!fs.existsSync(fullpath)) {\n        continue;\n      }\n\n      paths.push({ params: { slug }, locale });\n    }\n  }\n\n  return {\n    paths,\n    fallback: false,\n  };\n};\n\nexport const getStaticProps = async ({ params: { slug }, locale }) => {\n  // we need to find and read the file\n  const filename = locale === defaultLocale ? \'index.md\' : `index.${locale}.md`;\n  const markdownWithMetadata = fs\n    .readFileSync(path.join(postsDirectory, slug + \'/\' + filename))\n    .toString();\n  // we parse the content to strip the metadata\n  const parsedMarkdown = matter(markdownWithMetadata);\n  // we parse the content to convert it to html with marked\n  const htmlString = marked(parsedMarkdown.content);\n  return {\n    props: {\n      htmlString,\n      data: parsedMarkdown.data,\n    },\n  };\n};\n
Run Code Online (Sandbox Code Playgroud)\n

我已经更新了React,也尝试在页面上导入React,但是根本不起作用。Next.js 默认导入 React,但在另一个组件中,我必须强制导入,当我在模板上使用 import React from \'react\' 时,我从 MODULE_7 转到 MODULE_8。

\n
TypeError: (0 , marked__WEBPACK_IMPORTED_MODULE_8__.default) is not a function\n
Run Code Online (Sandbox Code Playgroud)\n

小智 13

我有同样的问题。你导入marked错了。正如备注文档中所述,您应该这样做import { marked } from 'marked';

在此输入图像描述