watch-os-3 相关问题


我在 python 3 中通过 pip install 下载的库中存在问题

导入pytube pytube.YouTube('https://www.youtube.com/watch?v=qxhMUbpm_XI').streams.first().download() yt = pytube.YouTube('https://www.youtube.com/watch?v=qxhMUbpm_XI') yt.streams ....过滤器(程序...


在 macOS 的本地主机上设置 HTTPS [mac os catalina 10.15.2]

cd ~/ mkdir .localhost-ssl sudo openssl genrsa -out ~/.localhost-ssl/localhost.key 2048 sudo openssl req -new -x509 -key ~/.localhost-ssl/localhost.key -out ~/.localhost-ssl/localhost.crt -days 3...


运行 npx json-server --watch Data/db.json --port 8000 时,它会抛出一个新错误

每当我运行 npx json-server --watch Data/db.json --port 8000 时,它都会抛出错误 类型错误 [ERR_PARSE_ARGS_UNKNOWN_OPTION]:未知选项“--watch”。要指定位置参数星...


有角度的手表未发射

有 1 个 Angular 应用程序,带有 1 个父控制器和一个子控制器。 child中,OBJ-CHILD有1个$watch WATCH-CHILD,触发$emit。 在父级中,有一个监听器...


运行 json-server --watch 时出现意外错误和警告

我尝试使用 json-server,如下所示: $ json-server --watch db.json 但是,当我运行该命令时,我收到错误或警告,具体取决于我安装的版本: 1.0.0-alpha.1-1...


如何在 Mac OS 中使用 Automator 批量缩放图像并填充白色

在 Mac OS 中使用 Automator 我正在尝试批量填充和缩放图像。 我尝试将图像批量缩放到特定尺寸以及填充。 如果我拖放整个文件夹,它不起作用...


从命令行打开新的终端选项卡 (Mac OS X)

是否可以从当前打开的选项卡中的命令行在 Mac OS X 终端中打开新选项卡? 我知道在终端中打开新选项卡的键盘快捷键是“CMD+t”,但我正在寻找...


使用 XAMPP 安装 Shopware 时出现问题:“无法下载 Shopware”

我在尝试使用 XAMPP 安装 Shopware 时遇到问题。我按照 YouTube 上的教程(https://www.youtube.com/watch?v=h8ufOH8kHmA)并成功下载了 shopware-insta...


Typescript 无法与 tsconfig.json 一起使用

在项目中使用 tsconfig 运行 tsc --watch 时,出现以下错误。 它需要 Node js 中的 React 和 Redux 类型。 错误 TS2688:找不到“abstract-leveldow...”的类型定义文件...


如何让运行在 WSL2 上的节点服务器通过 LAN 转发,以便可以通过电话访问?

我尝试过以下方法: https://www.youtube.com/watch?v=yCK3easuYm4 https://medium.com/codemonday/access-wsl-localhost-from-lan-for-mobile-testing-8635697f008 https://superuser.com/questions/1679...


在所有页面上重复我的导航栏小部件

我想在所有页面上重复该代码,但无法做到。遵循本教程:https://www.youtube.com/watch?v=2emB2VFrRnA&t=1s&ab_channel=HeyFlutter%E2%80%A4com,但它只显示在...


角度项目中的json服务器

在我的角度项目中,我希望使用json-server。安装json服务器后,使用此代码“json-server --watch db.json”创建db.json文件。然后给出此错误。 文件:///C:/用户/...


如何通过exec os/exec执行sc create命令?

我如何通过exec.Command执行我的sc命令? 代码: cmd := exec.Command("cmd.exe", "sc", "create", "Simpler", "binpath="+os.Getenv("APPDATA")+"\Simpler\cc.exe", "显示名称=我的服务...


unity中的slerp函数可以让人物走奇怪的圈子吗?

我尝试通过以下教程来实现统一: https://www.youtube.com/watch?v=AmGSEH7QcDg&t=30084s 1:22:30,老师想让玩家人物旋转到行走方向,并添加


在 ec2 中安装节点,Amazon Linux2 错误 glibc >= 2.28

尝试在以下位置安装 npm 和 node: 猫 /etc/os-release 名称=“亚马逊Linux” 版本=“2” ID=“amzn” ID_LIKE="centos rhel fedora" 版本_ID=“2” 漂亮...


如何整合两个python文件夹?

我的 OS(C:) 驱动器中的两个位置都有 python。 一个位于 [Folder1] C:\Python38 其他位于 [Folder2] C:\Users\User\AppData\Local\Programs\Python\Python38-32 大部分Folder1和Fol...


类型“string”无法分配给类型“FormGroup<any>”Angular 14 错误

我是一名初学者 Angular 开发人员,我正在使用本教程构建一个 todoList 应用程序 -> https://www.youtube.com/watch?v=WTn2nVphSl8 它是使用 Angular 13 完成的。我遇到错误的是我...


无法在Mac上启动MySQL

我的Mac是以下版本。 产品名称: Mac OS X 产品版本:10.11.6 构建版本:15G20015 我已经通过mysql-5.7.21-1-macos10.13-x86_64.dmg安装了MySQL,并放入:/usr/local/mysq...


如何使用 pytest-watch 查看打印语句?

在调试我的Python代码时,我试图在运行测试时查看打印语句。 如果我运行 pytest -s 或 pytest --capture=no 我可以按预期看到我的打印结果,但是当我尝试通过 o...


FLASK PUT Curl 命令:{"message": "未尝试加载 JSON 数据,因为请求内容类型不是 'application/json'。"}

我正在关注此视频:https://www.youtube.com/watch?v=xqJXDZvtogY 一切正常,直到我为 PUT 请求编写curl 命令。我的命令提示符中显示以下错误:&...


OS X - 确定给定 PID 的环境?

对于给定的进程ID,确定环境变量(例如PATH)的最佳/最直接方法是什么?必须能够查询任何任意环境变量。 PATH 只是第一个 e...


Python 向 amazon.com 发出请求 [已关闭]

这是我的代码,它总是返回503 帮我检查标题,这样它就不会被亚马逊屏蔽 # 用户代理列表 用户代理 = [ “Mozilla/5.0(Macintosh;Intel Mac OS X 10_15_7)AppleW...


使用 ASP.NET Core 和 TailwindCSS 进行热重载(或者:向 dotnet watch 添加额外的命令)

我正在研究将 TailwindCSS 与 ASP.NET 结合使用的良好热重载工作流程。 我决定使用 VSCode,因为 VisualStudio 没有良好的顺风扩展,而 Rider 的扩展也不支持...


Docker 使用“同步”操作来编写监视,并给出错误“文件存在”。 “重建”工作正常

我正在尝试使用 docker compose watch 配置 Django 项目,以将代码更改同步到容器化 Django 应用程序中。 撰写文件如下: 包括: - compose-db-dev.yaml 服务:


Vue 3如何获取$children的信息

这是我在 Tabs 组件中使用 VUE 2 的旧代码: 创建(){ this.tabs = this.$children; } 标签: .... 这是我在 Tabs 组件中使用 VUE 2 的旧代码: created() { this.tabs = this.$children; } 标签: <Tabs> <Tab title="tab title"> .... </Tab> <Tab title="tab title"> .... </Tab> </Tabs> VUE 3: 如何使用组合 API 获取有关 Tabs 组件中子项的一些信息?获取长度,迭代它们,并创建选项卡标题,...等?有任何想法吗? (使用组合API) 这是我现在的 Vue 3 组件。我使用 Provide 来获取子 Tab 组件中的信息。 <template> <div class="tabs"> <div class="tabs-header"> <div v-for="(tab, index) in tabs" :key="index" @click="selectTab(index)" :class="{'tab-selected': index === selectedIndex}" class="tab" > {{ tab.props.title }} </div> </div> <slot></slot> </div> </template> <script lang="ts"> import {defineComponent, reactive, provide, onMounted, onBeforeMount, toRefs, VNode} from "vue"; interface TabProps { title: string; } export default defineComponent({ name: "Tabs", setup(_, {slots}) { const state = reactive({ selectedIndex: 0, tabs: [] as VNode<TabProps>[], count: 0 }); provide("TabsProvider", state); const selectTab = (i: number) => { state.selectedIndex = i; }; onBeforeMount(() => { if (slots.default) { state.tabs = slots.default().filter((child) => child.type.name === "Tab"); } }); onMounted(() => { selectTab(0); }); return {...toRefs(state), selectTab}; } }); </script> 选项卡组件: <script lang="ts"> export default defineComponent({ name: "Tab", setup() { const index = ref(0); const isActive = ref(false); const tabs = inject("TabsProvider"); watch( () => tabs.selectedIndex, () => { isActive.value = index.value === tabs.selectedIndex; } ); onBeforeMount(() => { index.value = tabs.count; tabs.count++; isActive.value = index.value === tabs.selectedIndex; }); return {index, isActive}; } }); </script> <template> <div class="tab" v-show="isActive"> <slot></slot> </div> </template> 哦伙计们,我解决了: this.$slots.default().filter(child => child.type.name === 'Tab') 对于想要完整代码的人: 标签.vue <template> <div> <div class="tabs"> <ul> <li v-for="tab in tabs" :class="{ 'is-active': tab.isActive }"> <a :href="tab.href" @click="selectTab(tab)">{{ tab.name }}</a> </li> </ul> </div> <div class="tabs-details"> <slot></slot> </div> </div> </template> <script> export default { name: "Tabs", data() { return {tabs: [] }; }, created() { }, methods: { selectTab(selectedTab) { this.tabs.forEach(tab => { tab.isActive = (tab.name == selectedTab.name); }); } } } </script> <style scoped> </style> 标签.vue <template> <div v-show="isActive"><slot></slot></div> </template> <script> export default { name: "Tab", props: { name: { required: true }, selected: { default: false} }, data() { return { isActive: false }; }, computed: { href() { return '#' + this.name.toLowerCase().replace(/ /g, '-'); } }, mounted() { this.isActive = this.selected; }, created() { this.$parent.tabs.push(this); }, } </script> <style scoped> </style> 应用程序.js <template> <Tabs> <Tab :selected="true" :name="'a'"> aa </Tab> <Tab :name="'b'"> bb </Tab> <Tab :name="'c'"> cc </Tab> </Tabs> <template/> 我扫描子元素的解决方案(在对 vue 代码进行大量筛选之后)是这样的。 export function findChildren(parent, matcher) { const found = []; const root = parent.$.subTree; walk(root, child => { if (!matcher || matcher.test(child.$options.name)) { found.push(child); } }); return found; } function walk(vnode, cb) { if (!vnode) return; if (vnode.component) { const proxy = vnode.component.proxy; if (proxy) cb(vnode.component.proxy); walk(vnode.component.subTree, cb); } else if (vnode.shapeFlag & 16) { const vnodes = vnode.children; for (let i = 0; i < vnodes.length; i++) { walk(vnodes[i], cb); } } } 这将返回子组件。我对此的用途是我有一些通用的对话框处理代码,用于搜索子表单元素组件以咨询其有效性状态。 const found = findChildren(this, /^(OSelect|OInput|OInputitems)$/); const invalid = found.filter(input => !input.checkHtml5Validity()); 如果你复制粘贴与我相同的代码 然后只需向“选项卡”组件添加一个创建的方法,该方法将自身添加到其父级的选项卡数组中 created() { this.$parent.tabs.push(this); }, 使用脚本设置语法,您可以使用useSlots:https://vuejs.org/api/sfc-script-setup.html#useslots-useattrs <script setup> import { useSlots, ref, computed } from 'vue'; const props = defineProps({ perPage: { type: Number, required: true, }, }); const slots = useSlots(); const amountToShow = ref(props.perPage); const totalChildrenCount = computed(() => slots.default()[0].children.length); const childrenToShow = computed(() => slots.default()[0].children.slice(0, amountToShow.value)); </script> <template> <component :is="child" v-for="(child, index) in childrenToShow" :key="`show-more-${child.key}-${index}`" ></component> </template> 我对 Ingrid Oberbüchler 的组件做了一个小改进,因为它不支持热重载/动态选项卡。 在 Tab.vue 中: onBeforeMount(() => { // ... }) onBeforeUnmount(() => { tabs.count-- }) 在 Tabs.vue 中: const selectTab = // ... // ... watch( () => state.count, () => { if (slots.default) { state.tabs = slots.default().filter((child) => child.type.name === "Tab") } } ) 我也遇到了同样的问题,在做了很多研究并问自己为什么他们删除了$children之后,我发现他们创建了一个更好、更优雅的替代方案。 这是关于动态组件的。 (<component: is =" currentTabComponent "> </component>). 我在这里找到的信息: https://v3.vuejs.org/guide/component-basics.html#dynamic-components 希望这对你有用,向大家问好!! 我发现这个更新的 Vue3 教程使用 Vue 插槽构建可重用的选项卡组件对于与我相关的解释非常有帮助。 它使用 ref、provide 和ject 来替换我遇到同样问题的this.tabs = this.$children;。 我一直在遵循我最初发现的构建选项卡组件(Vue2)的教程的早期版本创建您自己的可重用 Vue 选项卡组件。 根据 Vue 文档,假设您在 Tabs 组件下有一个默认插槽,您可以直接在模板中访问该插槽的子级,如下所示: // Tabs component <template> <div v-if="$slots && $slots.default && $slots.default()[0]" class="tabs-container"> <button v-for="(tab, index) in getTabs($slots.default()[0].children)" :key="index" :class="{ active: modelValue === index }" @click="$emit('update:model-value', index)" > <span> {{ tab.props.title }} </span> </button> </div> <slot></slot> </template> <script setup> defineProps({ modelValue: Number }) defineEmits(['update:model-value']) const getTabs = tabs => { if (Array.isArray(tabs)) { return tabs.filter(tab => tab.type.name === 'Tab') } else { return [] } </script> <style> ... </style> 并且 Tab 组件可能类似于: // Tab component <template> <div v-show="active"> <slot></slot> </div> </template> <script> export default { name: 'Tab' } </script> <script setup> defineProps({ active: Boolean, title: String }) </script> 实现应类似于以下内容(考虑一组对象,每个部分一个,带有 title 和 component): ... <tabs v-model="active"> <tab v-for="(section, index) in sections" :key="index" :title="section.title" :active="index === active" > <component :is="section.component" ></component> </app-tab> </app-tabs> ... <script setup> import { ref } from 'vue' const active = ref(0) </script> 另一种方法是使用 useSlots,如 Vue 文档(上面的链接)中所述。 在 3.x 中,$children 属性已被删除并且不再受支持。相反,如果您需要访问子组件实例,他们建议使用 $refs。作为数组 https://v3-migration.vuejs.org/writing-changes/children.html#_2-x-syntax 在 3.x 版本中,$children 已被删除且不再受支持。使用 ref 访问子实例。 <script setup> import { ref, onMounted } from 'vue' import ChildComponent from './ChildComponent .vue' const child = ref(null) onMounted(() => { console.log(child.value) // log an instance of <Child /> }) </script> <template> <ChildComponent ref="child" /> </template> 详细信息:https://vuejs.org/guide/essentials/template-refs.html#template-refs 基于@Urkle的回答: /** * walks a node down * @param vnode * @param cb */ export function walk(vnode, cb) { if (!vnode) return; if (vnode.component) { const proxy = vnode.component.proxy; if (proxy) cb(vnode.component.proxy); walk(vnode.component.subTree, cb); } else if (vnode.shapeFlag & 16) { const vnodes = vnode.children; for (let i = 0; i < vnodes.length; i++) { walk(vnodes[i], cb); } } } 除了已接受的答案之外: 而不是 this.$root.$children.forEach(component => {}) 写 walk(this.$root, component => {}) 这就是我让它为我工作的方式。


为 Mac 操作系统安装哪个 jdbc(连接器/j)

我正在尝试下载 jdbc 连接器,但我无法从以下链接的选择选项中找到 mac os: https://dev.mysql.com/downloads/connector/j/ 哪里可以下载mysql连接器...


如何在 mac os 中阻止键盘敲击的同时读取小键盘的输入?

这个人有一个类似的项目,但是针对linux:https://unix.stackexchange.com/questions/343305/disable-keyboard-but-still-allow-reading-from-it 我想做的是让数字键盘表现得像


Mac OS 相当于 Sysinternals 和 Powertoys

作为一名具有 Windows 背景的开发人员,我总是发现不同的 Powertoys 和 Sysinternals 应用程序是辅助编程的宝贵工具。对于开发人员来说,是否有类似的东西


CPP std::thread 尝试使用已删除的函数

首先,我想说我已经对这个主题进行了研究,但没有任何相关...... (使用 clang 在 Mac OS X 上创建 std::thread 时出错:“尝试使用已删除的函数”...


使用 exec 在 golang 中运行 linux top 命令时得到不正确的结果

我试图获取 golang 中运行最高的进程,为此我使用 golang“os/exec”包运行 linux top 命令,但进程名称存在差异。 进程名称是


使用 Applescript 修改文件标签

我正在尝试从文件夹的所有内容中递归删除所有标签(OS X 10.9 的新功能之一)。由于文件夹中有很多文件(以及包含更多文件的文件夹...


我做了一个简单的hello world,内核''。它不打印任何东西。我做错了什么?

我遵循了本教程:https://www.youtube.com/watch?v=1rnA6wpF0o4,以便在启动后编写一个非常非常基本的 hello world,因为它在接下来的剧集中看起来非常完整。我的问题是...


谁能提供Pop_OS的信息吗? [已关闭]

我是编程新手,我想扩展我的知识。我使用 Windows 10,我正在考虑使用 Pop OS,但我仍然不太确定。我想要一些带有 GUI 的东西(显然啊哈),但也


从源“https://excel.officeapps.live.com”访问“https://localhost:8000/lib/functions.json”处的 XMLHttpRequest 被 CORS 策略阻止

我正在尝试通过JavaScript API在Excel中开发自定义函数。环境是Mac OS和Excel Online (Chrome)。 我按照教程并通过 npx office-addin-dev-certs 安装证书


Os Dev 的 PCI IDE 教程中的 insl 函数是做什么用的?

这是调用insl的函数。 void ide_read_buffer(无符号字符通道,无符号字符寄存器,无符号整数缓冲区, 无符号整型四元组) { /* 警告:此代码包含...


使用 Applescript 删除 Finder 标签(和标签)

我正在尝试从文件夹的所有内容中递归删除所有标签(OS X 10.9 的新功能之一)。由于文件夹中有很多文件(以及包含更多文件的文件夹...


如何找到 Android Automotive OS 车辆的硬件规格?

在研究 Android 汽车操作系统的开发时,特别是在停放的应用程序类别中,我发现很难知道可用的硬件范围是什么样的。 与手机/ta不同...


API 中的多点触控功能如何? (iPhone/OS X)

我没有 iPhone,也不想每月花 130 美元买手机。 (我大部分时间都把它留在车里,有时甚至整个周末。)但我渴望这项技术能够作为移动设备


从 Android Automotive OS 中“Screen”子类的方法获取“Activity”实例

我正在尝试在 Android (13) 汽车操作系统中制作一个简单的应用程序。我的理解非常有限,尤其是在活动方面。在onGetTemplate中,我希望请求许可,w...


使用 pyenv 的 Visual Studio 代码中没有适用于 Mac OS 的名为“numpy”的模块

我的 numpy 有问题。 当我尝试在 Visual Studio 中运行 main.py 文件时,我收到此消息。 将 numpy 导入为 np ModuleNotFoundError:没有名为“numpy”的模块 错误 conda.cli.main_run:执行(33):


如何仅获取 Excel 或 Numbers 中单元格的特定部分?

我正在尝试将交易数据提取到有用的单独单元格中。现在我可以在 Excel 或 Numbers(在 OS X 上)中拥有一个单元格,例如: 04/23 超市商店 $38.89 不过,我想分开...


如何在为 Android Automotive OS 构建的模板化应用程序中请求权限?

我正在尝试在 Android (13) 汽车操作系统中制作一个简单的应用程序。我的理解非常有限,尤其是在活动方面。在onGetTemplate中,我希望请求许可,w...


MariaDB 数据插入,2 字节字母出现错误消息。你能看一下我的代码吗?

我已经将数据库从 MySQL 5.0 (Fedora Core 7) 迁移到 MariaDB 10.5 到最新的 OS Rocky 9.1。就 ASCII 1 字节文本数据而言,没有问题。现在,我有足够的 2 字节字符...


pandas 系列替换为回填替代品

pandas.Series.replace 的文档包含一个示例: >> 将 pandas 导入为 pd >> s = pd.Series([1, 2, 3, 4, 5]) >> s.replace([1, 2], method='bfill') 0 3 1 3 2 3 ...


使用指向c中数组的指针返回二维数组

#包括 int (*createArray())[3] { 静态 int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; 返回 arr; } int main() { int (*ptr)[3] = createArray(); 对于 (int i = 0; i &l...


如何执行 QtWidgets.QTableWidget.setHorizontalHeader() 来保持默认行为?

pyqt5。常规表: 从 PyQt5 导入 QtWidgets 应用程序 = QtWidgets.QApplication([]) 表 = QtWidgets.QTableWidget(3, 3) table.setHorizontalHeaderLabels(['1', '2', '3']) 表.show() app.exec_()...


Python 3 str.join() 保证顺序吗?

Python 3(标准实现)是否保证以下代码始终生成字符串 2, 3, 1? ', '.join(['2', '3', '1']) 如果是,此功能(订单保持)在哪里记录?...


gridview点击后如何知道点击了哪个单元格

我有一个 PROJECT_EFFORT 表。 项目 ID、年份、月份、工作量 1, 2022, 12, 10 2, 2022, 12, 20 2, 2023, 1, 100 2, 2023, 2, 50 2, 2023, 3, 30 3, 2023, 3, 40 3, 2023, 4, 10 3, 2023, 5, 120 4、...


在js中查找数组的所有子集

这里我编写了一个程序,它将找到所有子集数组,就像数组是 [1, 2, 3] 一样,我想要输出像 [[], 2],, 2, , [2, 1 ], 3, , [3, 1], [3, 2], [3 我写了一个程序


在发布为 npm 包之前使用 npm 链接测试组件时出现重复的 ReactJS 导入问题

我有一个像这样的简单组件。 从'react'导入React,{useState}; 函数 MyComponentWithState(props) { const [值,setValue] = useState(0); 返回 ( 我的价值... 我有一个像这样的简单组件。 import React, {useState} from 'react'; function MyComponentWithState(props) { const [value, setValue] = useState(0); return ( <p>My value is: {value}</p> ) } export default MyComponentWithState; 我想将它作为单独的包发布在 NPM 上。因此,为此我准备了 package.json 和 webpack.config.js,如下所示。 package.json: { "name": "try-to-publish", "version": "0.0.1", "description": "Just a test", "main": "build/index.js", "scripts": { "start": "webpack --watch", "build": "webpack" }, "author": { "name": "Behnam Azimi" }, "license": "ISC", "peerDependencies": { "react": "16.9.0", "react-dom": "16.9.0" }, "dependencies": { "react": "16.9.0", "react-dom": "16.9.0", "prop-types": "15.7.2", "react-scripts": "3.1.1", "webpack": "4.39.3" }, "devDependencies": { "@babel/core": "7.6.0", "@babel/plugin-proposal-class-properties": "7.5.5", "@babel/preset-env": "7.6.0", "@babel/preset-react": "7.0.0", "babel-loader": "8.0.6", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-react-jsx": "6.24.1", "css-loader": "3.2.0", "node-sass": "4.12.0", "sass-loader": "8.0.0", "style-loader": "1.0.0", "webpack-cli": "3.3.8", "webpack-external-react": "^1.1.2" } } webpack.config.json: const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'build'), filename: 'index.js', libraryTarget: 'commonjs2' }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, include: path.resolve(__dirname, 'src'), use: { loader: "babel-loader" } }, ] }, resolve: { alias: { 'react': path.resolve(__dirname, 'node_modules/react'), 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'), } }, externals: { 'react': "commonjs react", 'react-dom': "commonjs react-dom" }, }; 这是我的 .babelrc: { "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties"] } 当我将组件发布到 NPM 并使用 `npm install 将其安装到我的另一个 ReactJs 项目中时,这些配置就像魅力一样,但我的观点是本地测试! 我想在发布之前测试这个组件/库。为此,我使用 npm link 功能将我的组件与我的主 ReactJS 项目链接起来。 正如您在上面看到的,我的组件是功能性的,我也使用了钩子。因此,当我将本地链接的库注入到我的主 ReactJs 项目中时,会遇到此错误, 无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一: 1.您的React和渲染器版本可能不匹配(例如React DOM) 2. 你可能违反了 Hooks 规则 3. 您可能在同一个应用程序中拥有多个 React 副本 我的问题与第三个原因有关。我的项目使用 ReactJs 并导入一次,我的组件也会导入 React!我的意思是在一个项目中两次 React 导入!. 我的 Webpack 配置中还有关于 react 和 react-dom 的 externals 配置。 我应该怎么做才能解决这个问题?我的错误在哪里? 更新: 我也尝试过 @sung-m-kim 和 @eddie-cooro 所说的,但没有成功!意思是,我更改了 package.json 并从 react 中删除了 react-dom 和 dependencies 并将它们添加到 devDpendencies。 我终于通过这些步骤解决了这个问题。 运行npm链接里面 <your-library-package>/node_modules/react 还有 运行npm链接里面 <your-library-package>/node_modules/react-dom 然后在 应用程序根目录中运行 npm link react 和 npm link react-dom 并且不要忘记将 React 和 React-dom 作为库中的外部对象保留 // webpack.config.js const externals = { "react": "react", "react-dom": "react-dom", } module.exports = { . . . externals } 我解决了我的问题。我使用 RollupJS 而不是 Webpack 作为捆绑工具进行捆绑。 这是我的rollup.config.js: import {uglify} from 'rollup-plugin-uglify' import babel from 'rollup-plugin-babel' export default { input: "./src/index.js", external: ['react', 'react-dom'], output: { name: 'test-lib', format: "cjs", }, plugins: [ babel({ exclude: "node_modules/**" }), uglify(), ], }; 和我的package.json: { "name": "test-lib", "version": "1.0.0", "main": "dist/test-lib.min.js", "scripts": { "build": "rollup -c -o dist/test-lib.min.js" }, "author": "Behnam Azimi", "license": "ISC", "peerDependencies": { "react": "^16.9.0", "react-dom": "^16.9.0" }, "devDependencies": { "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", "@babel/preset-react": "^7.0.0", "rollup": "^1.21.4", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-uglify": "^6.0.3" } } 经过这些更改,npm link在我的ReactJS(Hooks)项目中真正发挥了作用。 请注意,这只是一个简单的 Rollup 配置来展示我的解决方案,您可以在配置中添加多种内容,例如热重载、样式加载器和许多其他插件。 仅在 package.json 的 react 部分(而不是 react-native)内设置 peerDependencies 和 dependencies 包。另外,对于本地开发(当您的包未包含在任何其他 React 项目中并且您想在本地运行它时),您可以使用 devDependencies 字段。 我在打字稿反应项目中解决了这个问题。 可能,当使用 npm link 时,请使用主应用程序项目和组件项目中的 react。 因此,在您的 package.json 中从 react 和/或 dependencies 中删除 devDependencies 检查答案:https://stackoverflow.com/a/62807950/5183591 我也有同样的问题。 就我而言,我开发了一些 UI 组件作为包,其中有一个包含 React 应用程序的示例文件夹,用于创建 React 应用程序。 问题是,当我使用 npm i ../ 将包安装到示例应用程序中时,它会将包中的所有文件安装到示例应用程序中,包括 node_modules 文件夹。由于我已经安装了 react 和 react-dom 作为对等依赖项,示例应用程序现在有两个不同的 React 副本。 从包中删除 node_module 文件夹并重新安装包再次解决了我的问题。


© www.soinside.com 2019 - 2024. All rights reserved.