No receipt for ‘com.apple.pkg.CLTools_Executables‘ found at ‘/‘.错误

在更新npm版本后,尝试安装deasync模块时遇到了错误。首先提示需要Python3.6及以上版本,安装Python后,npm安装过程中报错,错误代码为1。错误信息显示缺少必要的开发者工具,如Xcode的命令行工具。解决方法可能包括安装Xcode的命令行工具或者更换npm的源到官方源。
部署运行你感兴趣的模型镜像

具体错误信息

这个是更新npm版本后出现的,先提示安装python3.6及以上版本,安装后报下面这个错误

npm ERR! code 1
npm ERR! path /Users/kid/Desktop/Done/fe-slb-console-cecloud-com/node_modules/deasync
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@14.17.3 | darwin | x64
npm ERR! gyp info find Python using Python version 3.10.4 found at "/usr/local/bin/python3"
npm ERR! gyp info spawn /usr/local/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/kid/Desktop/Done/fe-slb-console-cecloud-com/node_modules/deasync/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/kid/Library/Caches/node-gyp/14.17.3/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/kid/Library/Caches/node-gyp/14.17.3',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/kid/Library/Caches/node-gyp/14.17.3/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Users/kid/Desktop/Done/fe-slb-console-cecloud-com/node_modules/deasync',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
npm ERR! 
npm ERR! No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
npm ERR! 
npm ERR! No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
npm ERR! 
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 1
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (events.js:375:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
npm ERR! gyp ERR! System Darwin 21.1.0
npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /Users/kid/Desktop/Done/fe-slb-console-cecloud-com/node_modules/deasync
npm ERR! gyp ERR! node -v v14.17.3
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/kid/.npm/_logs/2022-03-31T11_18_32_222Z-debug-0.log

解决方式

换成npm的源
新的淘宝源没有尝试会不会有这个问题

npm config set registry https://registry.npmjs.org/ 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

select * from (SELECT a.* FROM (SELECT a.ID, a.PROJECT_ID,b.PROJ_ID project_code,b.PROJ_NAME project_name, a.ORG_NO,c.NAME org_name, a.MILESTONE_NO, a.MILESTONE_DESCRIPTION, a.MILESTONE_TYPE, a.BASELINE_DATE, a.ACTUAL_DATE, a.REMARK, a.REMARK_EN, a.MILESTONE_DESCRIPTION_EN, a.MILESTONE_TYPE_EN, a.IS_OUT, a.FORECAST_DATE, case WHEN a.ACTUAL_DATE IS NULL AND TRUNC(sysdate)>trunc(a.PLAN_END_DATE) THEN '3' ELSE a.STATE END state , a.CREATE_USER_ID, a.CREATE_DATE, a.UPDATE_USER_ID, a.UPDATE_DATE,a.milestone_edition,a.PLAN_END_DATE,a.is_check, a.examine_state,a.FORECAST_DATE_EN,a.milestone_state, a.IS_RECEIPT FROM (SELECT * FROM PLANNING_MILESTONES WHERE PROJECT_ID IN (select T.proj_no as id from rel_account_project R inner join proj T on R.project_id = T.proj_no and R.account_id = #{model.userId})) a LEFT JOIN proj b ON a.PROJECT_ID = b.PROJ_NO LEFT JOIN PROJECT_BUILDBASE c ON a.ORG_NO = c.ORG_NO JOIN (SELECT project_id,'R'||max(TO_NUMBER(REPLACE(milestone_edition,'R'))) milestone_edition_num FROM (SELECT * FROM PLANNING_MILESTONES WHERE PROJECT_ID IN (select T.proj_no as id from rel_account_project R inner join proj T on R.project_id = T.proj_no and R.account_id = #{model.userId})) a GROUP BY project_id) d ON a.project_id = d.project_id AND a.milestone_edition = d.milestone_edition_num Left Join PROJECT_WBS_CONFIG pwc on a.PROJECT_ID = pwc.PROJECT_ID) a where a.state = '3' union all SELECT b.* FROM ( SELECT a.ID, a.PROJECT_ID,b.PROJ_ID project_code,b.PROJ_NAME project_name, a.ORG_NO,c.NAME org_name, a.MILESTONE_NO, a.MILESTONE_DESCRIPTION, a.MILESTONE_TYPE, a.BASELINE_DATE, a.ACTUAL_DATE, a.REMARK, a.REMARK_EN, a.MILESTONE_DESCRIPTION_EN, a.MILESTONE_TYPE_EN, a.IS_OUT, a.FORECAST_DATE, case WHEN a.ACTUAL_DATE IS NULL AND TRUNC(sysdate)>trunc(a.PLAN_END_DATE) THEN '3' ELSE a.STATE END state , a.CREATE_USER_ID, a.CREATE_DATE, a.UPDATE_USER_ID, a.UPDATE_DATE,a.milestone_edition,a.PLAN_END_DATE,a.is_check, a.examine_state,a.FORECAST_DATE_EN,a.milestone_state FROM (SELECT * FROM PLANNING_MILESTONES WHERE PROJECT_ID IN (select T.proj_no as id from rel_account_project R inner join proj T on R.project_id = T.proj_no and R.account_id = #{model.userId})) a LEFT JOIN proj b ON a.PROJECT_ID = b.PROJ_NO LEFT JOIN PROJECT_BUILDBASE c ON a.ORG_NO = c.ORG_NO JOIN (SELECT project_id,'R'||max(TO_NUMBER(REPLACE(milestone_edition,'R'))) milestone_edition_num FROM (SELECT * FROM PLANNING_MILESTONES WHERE PROJECT_ID IN (select T.proj_no as id from rel_account_project R inner join proj T on R.project_id = T.proj_no and R.account_id = #{model.userId})) a GROUP BY project_id) d ON a.project_id = d.project_id AND a.milestone_edition = d.milestone_edition_num ORDER BY b.PROJ_ID,a.milestone_edition,TO_NUMBER(REGEXP_SUBSTR(MILESTONE_NO,'[^-]+',1,(length(MILESTONE_NO)-length(REPLACE(MILESTONE_NO,'-'))+1))) ) b where b.state != '3' )
最新发布
10-10
你提供的 SQL 报错: > **ORA-01789: query block has incorrect number of result columns** 原因正是:在 `UNION ALL` 的两个查询中,**返回的列数量不一致**。 --- ## ✅ 问题定位 我们来逐行分析你的 SQL: ```sql SELECT * FROM ( -- 查询 A(第一个 SELECT) SELECT a.* FROM ( SELECT a.ID, ..., a.IS_RECEIPT -- 注意:这里包含了 IS_RECEIPT 字段 ... ) a WHERE a.state = '3' UNION ALL -- 查询 B(第二个 SELECT) SELECT b.* FROM ( SELECT a.ID, ..., a.milestone_state -- ❌ 缺少 IS_RECEIPT 字段! ... ) b WHERE b.state != '3' ) ``` ### 🔍 关键差异点: - 第一个子查询(A)有字段:`a.IS_RECEIPT` - 第二个子查询(B)**没有 `IS_RECEIPT` 字段** 所以: - 查询 A 返回:**比如 25 列** - 查询 B 返回:**24 列(少一列)** 👉 因此 Oracle 抛出错误:`ORA-01789: query block has incorrect number of result columns` --- ## ✅ 解决方案 要修复这个问题,必须让两个 `SELECT` 查询返回 **相同数量和兼容类型的列**。 ### ✅ 修复方法:在第二个查询中补上缺失的 `IS_RECEIPT` 字段 修改第二部分的 `SELECT`,显式添加 `NULL AS IS_RECEIPT`(或其他默认值): ```sql SELECT * FROM ( -- 查询 A(保留原样) SELECT a.* FROM ( SELECT a.ID, a.PROJECT_ID, b.PROJ_ID AS project_code, b.PROJ_NAME AS project_name, a.ORG_NO, c.NAME AS org_name, a.MILESTONE_NO, a.MILESTONE_DESCRIPTION, a.MILESTONE_TYPE, a.BASELINE_DATE, a.ACTUAL_DATE, a.REMARK, a.REMARK_EN, a.MILESTONE_DESCRIPTION_EN, a.MILESTONE_TYPE_EN, a.IS_OUT, a.FORECAST_DATE, CASE WHEN a.ACTUAL_DATE IS NULL AND TRUNC(SYSDATE) > TRUNC(a.PLAN_END_DATE) THEN '3' ELSE a.STATE END AS state, a.CREATE_USER_ID, a.CREATE_DATE, a.UPDATE_USER_ID, a.UPDATE_DATE, a.milestone_edition, a.PLAN_END_DATE, a.is_check, a.examine_state, a.FORECAST_DATE_EN, a.milestone_state, a.IS_RECEIPT -- ✅ 包含了 IS_RECEIPT FROM PLANNING_MILESTONES a LEFT JOIN proj b ON a.PROJECT_ID = b.PROJ_NO LEFT JOIN PROJECT_BUILDBASE c ON a.ORG_NO = c.ORG_NO JOIN ( SELECT project_id, 'R'||MAX(TO_NUMBER(REPLACE(milestone_edition,'R'))) AS milestone_edition_num FROM PLANNING_MILESTONES WHERE PROJECT_ID IN ( SELECT T.proj_no FROM rel_account_project R INNER JOIN proj T ON R.project_id = T.proj_no WHERE R.account_id = #{model.userId} ) GROUP BY project_id ) d ON a.project_id = d.project_id AND a.milestone_edition = d.milestone_edition_num LEFT JOIN PROJECT_WBS_CONFIG pwc ON a.PROJECT_ID = pwc.PROJECT_ID WHERE a.PROJECT_ID IN ( SELECT T.proj_no FROM rel_account_project R INNER JOIN proj T ON R.project_id = T.proj_no WHERE R.account_id = #{model.userId} ) ) a WHERE a.state = '3' UNION ALL -- 查询 B(修复:补上 IS_RECEIPT) SELECT b.* FROM ( SELECT a.ID, a.PROJECT_ID, b.PROJ_ID AS project_code, b.PROJ_NAME AS project_name, a.ORG_NO, c.NAME AS org_name, a.MILESTONE_NO, a.MILESTONE_DESCRIPTION, a.MILESTONE_TYPE, a.BASELINE_DATE, a.ACTUAL_DATE, a.REMARK, a.REMARK_EN, a.MILESTONE_DESCRIPTION_EN, a.MILESTONE_TYPE_EN, a.IS_OUT, a.FORECAST_DATE, CASE WHEN a.ACTUAL_DATE IS NULL AND TRUNC(SYSDATE) > TRUNC(a.PLAN_END_DATE) THEN '3' ELSE a.STATE END AS state, a.CREATE_USER_ID, a.CREATE_DATE, a.UPDATE_USER_ID, a.UPDATE_DATE, a.milestone_edition, a.PLAN_END_DATE, a.is_check, a.examine_state, a.FORECAST_DATE_EN, a.milestone_state, NULL AS IS_RECEIPT -- ✅ 补上这一列,保持列数一致 FROM PLANNING_MILESTONES a LEFT JOIN proj b ON a.PROJECT_ID = b.PROJ_NO LEFT JOIN PROJECT_BUILDBASE c ON a.ORG_NO = c.ORG_NO JOIN ( SELECT project_id, 'R'||MAX(TO_NUMBER(REPLACE(milestone_edition,'R'))) AS milestone_edition_num FROM PLANNING_MILESTONES WHERE PROJECT_ID IN ( SELECT T.proj_no FROM rel_account_project R INNER JOIN proj T ON R.project_id = T.proj_no WHERE R.account_id = #{model.userId} ) GROUP BY project_id ) d ON a.project_id = d.project_id AND a.milestone_edition = d.milestone_edition_num WHERE a.PROJECT_ID IN ( SELECT T.proj_no FROM rel_account_project R INNER JOIN proj T ON R.project_id = T.proj_no WHERE R.account_id = #{model.userId} ) ) b WHERE b.state != '3' ) ``` --- ## ✅ 为什么会出现这个错误? | 原因 | 说明 | |------|------| | ❌ 列数不匹配 | `UNION [ALL]` 要求左右两边 `SELECT` 的列数完全相同 | | ❌ 字段遗漏 | 第二个查询忘了加 `IS_RECEIPT` | | 🧠 开发习惯问题 | 使用 `SELECT *` 或嵌套太多层时容易忽略字段对齐 | --- ## ✅ 最佳实践建议 ### ✅ 1. 避免使用多层嵌套 + `SELECT *` 尽量避免写成: ```sql SELECT * FROM (SELECT * FROM (...)) ``` 这种结构难以调试且容易出错。 ✅ 建议改为扁平化结构,并明确列出所有字段。 --- ### ✅ 2. 统一字段列表模板 可以先定义好“标准输出字段”,然后两个分支都按这个结构输出: ```sql -- 标准字段清单: ID, PROJECT_ID, project_code, project_name, ORG_NO, org_name, MILESTONE_NO, MILESTONE_DESCRIPTION, MILESTONE_TYPE, BASELINE_DATE, ACTUAL_DATE, REMARK, REMARK_EN, MILESTONE_DESCRIPTION_EN, MILESTONE_TYPE_EN, IS_OUT, FORECAST_DATE, state, CREATE_USER_ID, CREATE_DATE, UPDATE_USER_ID, UPDATE_DATE, milestone_edition, PLAN_END_DATE, is_check, examine_state, FORECAST_DATE_EN, milestone_state, IS_RECEIPT ``` 每个分支都要包含这些字段,缺失的用 `NULL` 补齐。 --- ### ✅ 3. 使用 CTE 提高可读性(Oracle 11g 及以上) ```sql WITH base_data AS ( SELECT a.*, b.PROJ_ID AS project_code, b.PROJ_NAME AS project_name, c.NAME AS org_name, CASE WHEN a.ACTUAL_DATE IS NULL AND TRUNC(SYSDATE) > TRUNC(a.PLAN_END_DATE) THEN '3' ELSE a.STATE END AS computed_state, ROW_NUMBER() OVER (PARTITION BY a.PROJECT_ID ORDER BY TO_NUMBER(REPLACE(a.milestone_edition,'R')) DESC) AS rn FROM PLANNING_MILESTONES a JOIN proj b ON a.PROJECT_ID = b.PROJ_NO LEFT JOIN PROJECT_BUILDBASE c ON a.ORG_NO = c.ORG_NO WHERE a.PROJECT_ID IN ( SELECT T.proj_no FROM rel_account_project R INNER JOIN proj T ON R.project_id = T.proj_no WHERE R.account_id = #{model.userId} ) ), latest_edition AS ( SELECT * FROM base_data WHERE rn = 1 ) SELECT ID, PROJECT_ID, project_code, project_name, ORG_NO, org_name, MILESTONE_NO, MILESTONE_DESCRIPTION, MILESTONE_TYPE, BASELINE_DATE, ACTUAL_DATE, REMARK, REMARK_EN, MILESTONE_DESCRIPTION_EN, MILESTONE_TYPE_EN, IS_OUT, FORECAST_DATE, computed_state AS state, CREATE_USER_ID, CREATE_DATE, UPDATE_USER_ID, UPDATE_DATE, milestone_edition, PLAN_END_DATE, is_check, examine_state, FORECAST_DATE_EN, milestone_state, IS_RECEIPT FROM latest_edition ORDER BY project_code, milestone_edition, ...; ``` 这样逻辑更清晰,也避免了 `UNION` 的麻烦。 --- ## ✅ 总结 | 问题 | 解决方案 | |------|----------| | `ORA-01789` 错误 | 两个 `SELECT` 列数不一致 | | 缺失字段 | 第二个查询缺少 `IS_RECEIPT` | | 修复方式 | 在第二个查询中添加 `NULL AS IS_RECEIPT` | | 预防措施 | 显式列出所有字段,避免嵌套 `SELECT *` | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空门.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值