fs-extra:源和目标不能相同。 (科尔多瓦)
fs-extra: source and destination must not be the same. (cordova)
我在使用 cordova 构建时遇到错误。
Error: Source and destination must not be the same.
构建系统:
Ionic:
ionic (cli): 4.10.1
ionic framework: ionic-angular 3.9.2
@ionic/app-scripts: 3.1.11
Cordova:
cordova (cli): 8.1.2 (cordova-lib@8.1.1)
platforms: "cordova-android": "8.0.0"
System:
Android SDK Tools: 26.1.1
NodeJS: 10.15.3
npm: 6.4.1
OS: Windows 10
命令:
ionic cordova build android
或
cordova build --release
错误详情:
Error: Source and destination must not be the same.
at checkPaths (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\fs-extra\lib\copy-sync\copy-sync.js:185:11)
at Object.copySync (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\fs-extra\lib\copy-sync\copy-sync.js:25:20)
at updatePathWithStats (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:103:24)
at C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:298:19
at Array.forEach (<anonymous>)
at Object.mergeAndUpdateDir (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:296:33)
at updateWww (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\lib\prepare.js:157:17)
at Api.module.exports.prepare (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\lib\prepare.js:56:19)
at Api.prepare (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\Api.js:177:45)
at C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova\node_modules\cordova-lib\src\cordova\prepare.js:105:36
有没有人遇到同样的错误或知道哪里出了问题?
附加信息:
我总是将 git 存储库检出到一个空文件夹。这意味着:每次构建都是硬清理。没有node_modules也没有平台等(rm平台等没用)
我不知道这是否是正确答案,但这可能是 cordova build.json(如果您有)中的错误设置。
由于您使用的是 Jenkins,可能您的设置有误,例如缺少依赖项或类似的东西。
您也可以尝试删除平台并重新添加以获得最新版本和兼容性。
cordova platform remove android
cordova platform add android@8.0.0
您可以检查是否有过时的 fs-extra(虽然我认为这不是问题所在)并更新 Ionic。
您可以尝试恢复您的 node_modules。
我希望这些步骤之一对您有所帮助。
首先,手动删除这个:
node_modules
文件夹
package-lock.json
文件
platform > android
文件夹
然后使用这个推荐:
1 => npm rm -rf node_modules package-lock.json
2 => npm cache clear --force
3 => ionic cordova platform add android@8.0.0
4 => ionic cordova prepare android
5 => ionic cordova run android
问题是fs-extra
复制操作的checkPaths方法。检查节点 fs 的 state.ino(索引节点),它被评估为数字。 Bigint 也受支持但未启用。这就是比较失败的原因。因为 JavaScript 中的 max-safe-integer 是 53 位的。也可能是符号链接问题。
查看/加入:
https://github.com/jprichardson/node-fs-extra/issues/657
为什么选择 Cordova-Android 8.0.0?
因为 https://github.com/apache/cordova-common/blob/master/RELEASENOTES.md 。 fs-extra 是这个版本的新功能。
在我的例子中,它发生在 removing/adding android 时再次确保更新了一些插件。
此解决方案解决了我的问题 here
cordova clean android
我在使用 cordova 构建时遇到错误。
Error: Source and destination must not be the same.
构建系统:
Ionic:
ionic (cli): 4.10.1
ionic framework: ionic-angular 3.9.2
@ionic/app-scripts: 3.1.11
Cordova:
cordova (cli): 8.1.2 (cordova-lib@8.1.1)
platforms: "cordova-android": "8.0.0"
System:
Android SDK Tools: 26.1.1
NodeJS: 10.15.3
npm: 6.4.1
OS: Windows 10
命令:
ionic cordova build android
或
cordova build --release
错误详情:
Error: Source and destination must not be the same.
at checkPaths (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\fs-extra\lib\copy-sync\copy-sync.js:185:11)
at Object.copySync (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\fs-extra\lib\copy-sync\copy-sync.js:25:20)
at updatePathWithStats (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:103:24)
at C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:298:19
at Array.forEach (<anonymous>)
at Object.mergeAndUpdateDir (C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova-common\src\FileUpdater.js:296:33)
at updateWww (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\lib\prepare.js:157:17)
at Api.module.exports.prepare (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\lib\prepare.js:56:19)
at Api.prepare (C:\Jenkins\workspace\%PROJECTNAME%\platforms\android\cordova\Api.js:177:45)
at C:\Jenkins\workspace\%PROJECTNAME%\node_modules\cordova\node_modules\cordova-lib\src\cordova\prepare.js:105:36
有没有人遇到同样的错误或知道哪里出了问题?
附加信息: 我总是将 git 存储库检出到一个空文件夹。这意味着:每次构建都是硬清理。没有node_modules也没有平台等(rm平台等没用)
我不知道这是否是正确答案,但这可能是 cordova build.json(如果您有)中的错误设置。
由于您使用的是 Jenkins,可能您的设置有误,例如缺少依赖项或类似的东西。
您也可以尝试删除平台并重新添加以获得最新版本和兼容性。
cordova platform remove android
cordova platform add android@8.0.0
您可以检查是否有过时的 fs-extra(虽然我认为这不是问题所在)并更新 Ionic。
您可以尝试恢复您的 node_modules。
我希望这些步骤之一对您有所帮助。
首先,手动删除这个:
node_modules
文件夹
package-lock.json
文件
platform > android
文件夹
然后使用这个推荐:
1 => npm rm -rf node_modules package-lock.json
2 => npm cache clear --force
3 => ionic cordova platform add android@8.0.0
4 => ionic cordova prepare android
5 => ionic cordova run android
问题是fs-extra
复制操作的checkPaths方法。检查节点 fs 的 state.ino(索引节点),它被评估为数字。 Bigint 也受支持但未启用。这就是比较失败的原因。因为 JavaScript 中的 max-safe-integer 是 53 位的。也可能是符号链接问题。
查看/加入: https://github.com/jprichardson/node-fs-extra/issues/657
为什么选择 Cordova-Android 8.0.0? 因为 https://github.com/apache/cordova-common/blob/master/RELEASENOTES.md 。 fs-extra 是这个版本的新功能。
在我的例子中,它发生在 removing/adding android 时再次确保更新了一些插件。
此解决方案解决了我的问题 here
cordova clean android