错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]:包子路径“./lib/tokenize”不是由 node_modules 中模块的 package.json 中的“exports”定义的

Jul*_*Chu 169 node.js npm node-modules package.json

这是一个 React 网络应用程序。当我跑步时

npm start
Run Code Online (Sandbox Code Playgroud)

出现此错误

> dataflow@0.1.0 start
> react-scripts start

node:internal/modules/cjs/loader:488
      throw e;
  ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/tokenize' is not defined by "exports" in /Users/juliantc/Desktop/ai-studio/development/frontend/node_modules/postcss-safe-parser/node_modules/postcss/package.json
    at new NodeError (node:internal/errors:371:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:416:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:669:3)
    at resolveExports (node:internal/modules/cjs/loader:482:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Users/juliantc/Desktop/ai-    studio/development/frontend/node_modules/postcss-safe-parser/lib/safe-parser.js:1:17) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Node.js v17.0.1
Run Code Online (Sandbox Code Playgroud)

仅当我在这台特定计算机上运行此错误时才会发生此错误,而我没有超级用户访问权限。它适用于其他计算机。

作为参考,这是 ./node_modules/postcss-safe-parser/node_modules/postcss/package.json

这就是我在 ./node_modules/postcss-safe-parser/node_modules/postcss/lib/ 中列出文件时得到的结果

lgtd-lt-119-mbmt:前端 juliantc$ ls ./node_modules/postcss-safe-parser/node_modules/postcss/lib/

at-rule.d.ts        css-syntax-error.d.ts   input.d.ts      map-generator.js    postcss.d.ts        processor.js        rule.js         tokenize.js
at-rule.js      css-syntax-error.js input.js        node.d.ts       postcss.js      result.d.ts     stringifier.js      warn-once.js
comment.d.ts        declaration.d.ts    lazy-result.d.ts    node.js         postcss.mjs     result.js       stringify.d.ts      warning.d.ts
comment.js      declaration.js      lazy-result.js      parse.d.ts      previous-map.d.ts   root.d.ts       stringify.js        warning.js
container.d.ts      fromJSON.d.ts       list.d.ts       parse.js        previous-map.js     root.js         symbols.js
container.js        fromJSON.js     list.js         parser.js       processor.d.ts      rule.d.ts       terminal-highlight.js
Run Code Online (Sandbox Code Playgroud)

Anm*_*oor 156

我也遇到了同样的问题,因为我安装了最新版本的 Node.js。


对于使用NVM管理节点的Linux用户

nvm uninstall <version>
Run Code Online (Sandbox Code Playgroud)

现在安装LTS版本

nvm install --lts
Run Code Online (Sandbox Code Playgroud)

这对我有用。


或者


尝试删除 Node_modules 和锁定文件

  1. 删除您的node_modules文件夹,package-lock.json或者yarn.lock

  2. 重新安装所有依赖项。

    npm i
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    yarn
    
    Run Code Online (Sandbox Code Playgroud)

为了更好地了解如何安装节点,请查看 digital ocean 的博客 https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04

  • 如果您不想,则无需卸载节点版本。您可以使用项目文件夹中的 nvmrc 文件,或设置不同的版本作为 nvm 默认值 (6认同)
  • 这不是一个可行的解决方案,因为降级 Node.js 不是一个好的做法。 (3认同)
  • 谢谢!这有效。没想到这会成为问题。干杯 (2认同)
  • @GregTomasik 这可能不是一个可行的解决方案,但我不知道足够的 NodeJS 来修复损坏的第三方。因此,对于世界上大多数人来说,这是唯一可行的解​​决方案。 (2认同)

lau*_*gre 62

删除 node_modules 文件夹和 .lock 文件并重新安装包(yarn 或 npm)。它对我来说对nodejs的最后17.0.1有效,我可以npm(或yarn)再次启动我的应用程序。

  • 这对我有用,但后来我得到了一个“错误:错误:0308010C:数字信封例程::新哈希不受支持(节点:内部/加密/哈希:67:19)”,那就是:/。 (7认同)
  • 解决方法-&gt; /sf/ask/4878498971/ (4认同)

小智 31

我的工作解决方案是使用纱线:

  • 删除/node_modulesyarn.lock归档。
  • 然后使用 重新安装我删除的软件包/文件yarn install

有效 !!!

  • 不适合我。 (6认同)

小智 22

回滚到 Node16.8.0或(对我有用)稳定版本16.13.0

第1步:安装n

npm install -g n
Run Code Online (Sandbox Code Playgroud)

第2步:安装/设置节点最新稳定版本

sudo n stable
Run Code Online (Sandbox Code Playgroud)

或设置16.8.0

sudo n 16.8.0
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不能或不想使用 sudo 作为 n,您可以为该位置设置环境变量,例如;

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
Run Code Online (Sandbox Code Playgroud)


小智 20

FWIW,我在通过 Homebrew 安装了 Node 17.0.1 的 macOS Monterey 上遇到了这个问题。降级到 Node 16.x 对我有用。

使用 Homebrew 从 Node 17.x(最新)降级到 Node 16.x:

brew uninstall --ignore-dependencies node
brew install node@16
brew link node@16
Run Code Online (Sandbox Code Playgroud)


api*_*nam 19

删除并重新安装锁和节点模块没有帮助,但npm update对我有用


Ara*_*chi 9

当您尝试使用旧的 React 存储库(该存储库是使用低于v17.0.1的 Node.js 版本开发的,并且您当前使用的是v17.0.1或更高的 Node 版本)时,可能会出现此问题。

  1. 删除您的node_modules文件夹package-lock.jsonyarn 文件(如果有)。

  2. 使用以下命令强制清理整个 NPM 缓存。执行此命令时,您可能会收到警告,请忽略它。

    npm cache clean --force    //WARN using --force Recommended protections disabled.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新安装所有依赖项。

    npm install
    
    Run Code Online (Sandbox Code Playgroud)


小智 8

我在 craco 和 postcss 上遇到了这个问题。我所做的要解决的是

npm i -D postcss@latest
export NODE_OPTIONS=--openssl-legacy-provider
npm install
Run Code Online (Sandbox Code Playgroud)


小智 7

删除 node_modules 和 package-lock.json 后,我运行

npm audit fix --force 
Run Code Online (Sandbox Code Playgroud)

并将反应脚本更新为最新可用版本

npm install react-scripts@latest
Run Code Online (Sandbox Code Playgroud)


Zso*_*ros 7

您不需要回滚到旧的节点版本。

在 node.js v18 上,我通过删除node_modules文件夹和package-lock.json文件解决了这个问题:

rm -rf node_modules package-lock.json
Run Code Online (Sandbox Code Playgroud)

...然后运行:

npm i
npm audit fix
Run Code Online (Sandbox Code Playgroud)

我的下一个npm start工作得很好。


Rah*_*nto 6

使用 Node.js v17.0.1(最新功能)时我也会收到错误 - 我使用的是 macOS Catalina 和自制程序。

所以我想将 Node.js v17.0.1 切换到 Node.js (LTS) -> Node.js v16.3.1

我使用自制软件通过以下命令卸载节点:

brew uninstall node
Run Code Online (Sandbox Code Playgroud)

然后我从https://nodejs.org/en/下载 Node LTS并安装它。

在此输入图像描述

这对我来说是工作。谢谢 :)


Ham*_*Hub 5

我收到错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]:包子路径 './lib/parser' 未由 ...node_modules\next\node_modules\postcss\package.json 中的“exports”定义

升级react和nextjs后,我已经在节点版本17.4.0上解决了这个问题,使用:

npm install react@latest react-dom@latest
npm install next@12
Run Code Online (Sandbox Code Playgroud)

https://nextjs.org/docs/upgrading