【问题标题】:Cannot find module '@mdx-js/mdx' - Gatsby找不到模块'@mdx-js/mdx' - 盖茨比
【发布时间】:2020-09-09 21:50:38
【问题描述】:

在今天的最后一次更新之后,我收到了这个错误。不过我的项目中没有使用 MDX..

npm run develop 产生此问题,有人对此有所了解吗?

internal/modules/cjs/loader.js:979
  throw err;
  ^

Error: Cannot find module '@mdx-js/mdx'
Require stack:
- /Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/transform-recipe-mdx.js
- /Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/renderer/index.js
- /Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/validate-steps.js
- /Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/recipe-machine/index.js
- /Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/graphql-server/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:976:15)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Module.require (internal/modules/cjs/loader.js:1036:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/transform-recipe-mdx.js:12:35)
    at Module._compile (internal/modules/cjs/loader.js:1147:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Module.require (internal/modules/cjs/loader.js:1036:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/transform-recipe-mdx.js',
    '/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/renderer/index.js',
    '/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/validate-steps.js',
    '/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/recipe-machine/index.js',
    '/Users/mikey/Sites/Gimmix/node_modules/gatsby-recipes/dist/graphql-server/server.js'
  ]
}

【问题讨论】:

  • 你的更新是什么意思?
  • @FerranBuireu "gatsby": "^2.24.54", "gatsby-transformer-remark": "^2.8.33", "gatsby-source-filesystem": "^2.3.28"等等……
  • 当我将 gatsby 从 2.24.37 升级到 2.24.54 时,我得到了这个确切的错误。我也从未使用过 MDX,但 mdx-js 的错误点是 gatsby-recipes 的依赖项,我猜它必须是 gatsby 本身的依赖项。
  • @a_rts 我认为这是 gatsby 本身的错误/错误,我们必须等待即将到来的更新中的修复。 (?) 所以不要实时推送您的文件,请将它们保存在本地。

标签: javascript node.js npm gatsby


【解决方案1】:

问题已通过最新更新解决:?

盖茨比@2.24.5 (gatsby-plugin-sharp@2.6.33) (gatsby-source-contentful@2.3.43) (gatsby-transformer-remark@2.8.34)

删除缓存 gatsby clean

请务必同时更新您的 gatsby-cli:npm i -g gatsby-cli

删除您的 node_modules 和软件包以进行全新安装 rm -rf node_modules package-lock.json

最后但并非最不重要的 npm install --save

并测试您的构建过程 npm run develop

【讨论】:

    【解决方案2】:

    我建议将 Gatsby 依赖项降级到最新的稳定版本(到 v2.24.37)。这似乎是^2.24.54 版本中的常见问题。你可能猜到了,虽然你没有使用 @mdx-js/mdx 包,但它是 Gatsby 本身使用的依赖项。

    在任何包的升级过程中,升级依赖项并不意味着它们的所有子依赖项都可以工作,因为每个项目的需要。处理所有包裹可能需要几天/几周的时间。这就是为什么您应该在 gatsby devgatsby build 中确保项目在提交并将任何内容推送到存储库之前可以正常工作。

    如果您尚未提交升级,只需回滚跟踪的文件(git checkout .git reset --hard),删除您的 node_modules 并运行 npm install 命令以将项目保持在稳定运行的版本。

    如果您已提交文件,请运行 npm install gatsby@2.24.37 以降级您的 Gatsby 版本(或在您的 package.json 中修复它)并再次运行 npm install


    我在您的 cmets 中看到您在 package.json 中有依赖项,但您没有使用它。在这种情况下,请通过 npm uninstall @mdx-js/mdx 将其删除。

    【讨论】:

    • 是的。我还没推。谢谢你的提示。我将等待下一次更新,并将文件保存在本地。我说我的列表中没有这个包,所以这就是为什么我觉得它很奇怪.. 但即使这不是问题,因为“mdx/js”在整个更新之前就在我的 node_modules 中。所以现在更新只是乱七八糟..
    • 在这种情况下,只需回滚您的本地更改,删除您的node_modules 并运行npm install。因为它是 Gatsby 的开发依赖项,所以它会在你的模块中,但版本正确。
    • 我有,但仍然遇到同样的警告。我认为它是一个 gatsby 错误..
    【解决方案3】:

    运行 yarn add @mdx-js/mdx 为我修复了它。

    【讨论】:

    • 感谢您的努力,我没有尝试过,因为 Gatsby 已经用最新的更新修复了它。
    【解决方案4】:

    您首先确保所有依赖项都已正确安装。

    你可以通过导入import {&lt;name&gt;} from '@mdx-js'来检查这个模块是否安装

    如果它没有损坏,则表示它已经安装。 或者如果它坏了,那么运行npm install 来安装所有列出的依赖项。

    您可以继续检查此包中是否包含您想要的文件或数据。

    您可以通过import {&lt;name&gt;} from '@mdx-js/mdx' 进行检查。您还可以通过导航到node_modules/@mdx-js/mdx 目录来检查这一点。您会找到一些可以使用的数据名称、函数或对象等。名称必须与其中一种数据类型匹配,否则在导入某些内容时会出现拼写错误。

    注意:这是 node_modules 的通用调试方法

    【讨论】:

    • 谢谢,我是新手。看到你第一个删除的帖子我的朋友。不用担心,可以拥有。 ? 不确定我是否理解你,但我没有在我的项目中使用任何 MDX 或 markdown 文件,一切都来自无头 CMS。那为什么叫它呢?然而,我看到在删除并重新安装(更新)我的包(我总是这样做)之后,它将'@mdx-js/mdx'添加到了 package.lock.json。现在它期待我使用它。
    • 更正:*我看到无论如何,在删除并重新安装(更新)我的包(我总是这样做)之后,它更新了 package.lock.json 中的“@mdx-js/mdx” .
    • 如果说你是个新手,我很抱歉。你能在这里分享你的 package.json 文件吗?
    • 这里无法粘贴,字符太多。我真的是 Stackoverflow 的新手,尽管我在这里已经很多年了。你知道另一种分享方式吗.. (?)
    • 啊,很好,谢谢,我以后会的,现在它已经修复了。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2022-01-12
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2021-01-16
    相关资源
    最近更新 更多