在循环依赖中访问模块导出的不存在的属性“padLevels”
Posted
技术标签:
【中文标题】在循环依赖中访问模块导出的不存在的属性“padLevels”【英文标题】:Accessing non-existent property 'padLevels' of module exports inside circular dependency 【发布时间】:2021-02-19 02:59:49 【问题描述】:我只是 > npm i -g phonegap@9.0.0
和 > phonegap --version
。
它不仅说9.0.0
,还说:
(node:18392) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
当我> node --trace-warnings ...
时,我得到了这个:
internal/modules/cjs/loader.js:883
throw err;
^
Error: Cannot find module 'C:\Users\twori\...'
[90m at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)[39m
[90m at Function.Module._load (internal/modules/cjs/loader.js:725:27)[39m
[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)[39m
[90m at internal/main/run_main_module.js:17:47[39m
code: [32m'MODULE_NOT_FOUND'[39m,
requireStack: []
我只是安装和检查版本。为什么 phonegap 模块会抛出这个错误? 我的老师和其他学生都很好,但只有我什么都做不了。
【问题讨论】:
您使用的是哪个节点版本?请检查使用 node -v ***.com/questions/61406974/… 【参考方案1】:解决了根本原因
在循环依赖中导出
? 这句话给了我解决同样问题的提示,似乎较新的 NodeJS 版本不再允许循环依赖。
例如 - 有两个文件 - FileA.js,FileB.js
FileA.js 在哪里
const FileB = require("FileB");
并且 FileB.js 有
const FileA = require("FileA");
通过修改 FileA.js 或 FileB.js 删除其中一个循环依赖后,它就解决了!
【讨论】:
您是如何找到哪些文件具有循环依赖关系的? @Yossi 查看我最近的更改【参考方案2】:在我将节点从版本 12 更新到版本 14 后,我也遇到了同样的警告。 就我而言,这个警告是由于旧版本的浪涌而出现的。 更新激增后,警告消失了。如果您的系统中安装了浪涌,请将其更新到最新版本。 您可以运行此命令将浪涌更新到最新版本:
sudo npm i -g surge
【讨论】:
npm 更新也对我有用。我猜包供应商已经做出改变以符合较新的 nodejs 引擎 在 npm i 上调用 sudo 是一种不好的做法 @a11r 在安装带有-g
标志的全局包时,大多数情况下是必需的
@oniramarf 你说得对,我没有注意到 -g
标志【参考方案3】:
节点版本太高。之前使用的是最新的14+版本。切换回12版本后就没有这个问题了。
Mac 命令
sudo n 12.0.0
【讨论】:
如果你还没有n
,那么首先npm install -g n
。另外,我认为您不必 sudo
另外,nvm 是一个很棒的节点版本管理器以上是关于在循环依赖中访问模块导出的不存在的属性“padLevels”的主要内容,如果未能解决你的问题,请参考以下文章
(节点:15867)警告:在循环依赖中访问模块导出的不存在属性“cat”
Yeoman - 在循环依赖中访问模块导出的不存在属性____
(节点:52213)警告:在循环依赖中访问模块导出的不存在属性“MongoError”(使用节点--trace-warnings