错误的ERR!添加cordova插件时代码ENOENT(cordova删除它正在寻找的文件)

时间:2017-11-10 00:52:45

标签: cordova cordova-plugins phonegap phonegap-cli cordova-cli

我陷入了无限的挣扎之中!请帮助xD

无论我运行什么样的phonegap或cordova cli命令,cordova似乎都会删除之前寻找它们的文件。

以下是一些为我触发错误的已知命令:

$ cordova plugin add <plugin name>

$ phonegap plugin add <plugin name>

$ cordova platform update <platform name>

$ phonegap platform update <platform name>

$ cordova platform remove <platform name>

$ phonegap platform remove <platform name>

参见下面的终端输出,它显示了运行这些命令时得到的输出。我真的不确定为什么cordova在尝试重命名之前删除了它试图重命名的文件。很沮丧!

第1步(检查确保我们的git头干净且工作集没有变化)

apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ git status
# On branch feature-barcode-scanner
nothing to commit, working directory clean

第2步(尝试插件添加)

apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ cordova plugin add phonegap-plugin-barcodescanner --variable CAMERA_USAGE_DESCRIPTION="To scan barcodes"
Unmet project requirements for latest version of phonegap-plugin-barcodescanner:
cordova-android (6.2.3 in project, >=6.3.0 required)
Fetching highest version of phonegap-plugin-barcodescanner that this project supports: 6.0.8 (latest is 7.0.0)
Error: Failed to fetch plugin phonegap-plugin-barcodescanner@6.0.8 via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 254 Error output:
npm WARN cordova-plugin-file-transfer@1.5.1 requires a peer of cordova-plugin-file@^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN cordova-plugin-media-capture@1.2.0 requires a peer of cordova-plugin-file@^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN com.prodmod.mobileclient@1.0.0 No repository field.
npm WARN com.prodmod.mobileclient@1.0.0 No license field.

npm ERR! path prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename 'prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js' -> 'prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/.base64-js.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

┌──────────────────────────────────────────────────────────┐
│                 npm update check failed                  │
│           Try running with sudo or get access            │
│           to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /Users/apple/.config │
└──────────────────────────────────────────────────────────┘

npm ERR! A complete log of this run can be found in:
npm ERR! .npm/_logs/2017-11-10T00_23_21_467Z-debug.log

步骤3(检查步骤2中命令导致的git更改)

好的,所以失败了。让我们看看假设丢失的文件发生了什么。好吧,显然cordova在找到它之前删除了文件?

apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ git status
# On branch feature-barcode-scanner
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/.npmignore
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/.travis.yml
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/LICENSE.MIT
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/README.md
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/base64js.min.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/bower.json
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/lib/b64.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/package.json
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/big-data.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/convert.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/url-safe.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/.jshintrc
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/.travis.yml
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/History.md
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/LICENSE
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/Makefile
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/README.md
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist-build.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist-parse.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/examples/browser/index.html
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/index.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/lib/build.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/lib/parse.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/package.json
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/.npmignore
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/CHANGELOG.md
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/LICENSE
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/README.md
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/Utility.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLAttribute.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLCData.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLComment.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDAttList.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDElement.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDEntity.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDNotation.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDeclaration.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocType.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocument.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocumentCB.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLElement.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js
#   deleted:    node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/package.json
#
no changes added to commit (use "git add" and/or "git commit -a")

如果有人对如何解决这个问题有任何建议,我将非常感激。我不确定是什么导致它或什么时候生效,但现在已经有几个星期了,我还没有能够为我的项目添加插件。

提前致谢!

修改 环境设置:

apple@Child-2:/ $ cordova --version
7.0.1


┌──────────────────────────────────────────┐
│ Update available: 7.1.0 (current: 7.0.1) │
│ Run npm install -g cordova to update.    │
└──────────────────────────────────────────┘

apple@Child-2:/ $ phonegap --version
7.1.1
apple@Child-2:/ $ node --version
v6.11.1
apple@Child-2:/ $ npm --version
5.4.2

2 个答案:

答案 0 :(得分:1)

我真的不知道你项目中的问题在哪里,但是当我升级cordova版本并将我的项目从Eclipse迁移到Android Studio时,我也有类似的行为。

添加一些插件会导致多次删除,而我的所有项目都无法正常工作

我尝试了很多方法来修复它但是失败了,每次都有其他异常。

所以我通过从头开始创建新项目来解决它。逐个添加所有插件,然后复制旧项目中的所有www文件夹。

花了我大约30分钟,但值得。

提示:我会将node_modules文件夹放到.gitignore文件中。你不需要把所有的依赖都推到git。用户可以克隆项目,只需从根项目运行$ npm install

答案 1 :(得分:0)

嗯,所以我能够解决这个问题。线程中的讨论有助于在没有实际解决的情况下将我引导到正确的答案。

这就是我的所作所为:

第一步: 更新cordova

$ sudo npm install -g cordova

Phonegap已经更新到最新版本,但我的cordova没有。

第二步更新节点和npm

显然,在更新这两个组件后,我的应用程序中的所有内容都再次播放。此时它将使用/plugins安装到phonegap plugin add <plugin name>,但在我切换Maven存储库的位置之前,它没有将插件代码传播到Android。

第三步: 在build.gradle中更新Maven存储库位置

这与我的问题没有关系,但是当我在<app root>/phonegap/platforms/android/build.gradle

中更改了Maven存储库位置后,我就能够建立apk权限

这是我在build.gradle中更改的内容......

我原来的build.gradle设置:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }

    // Switch the Android Gradle plugin version requirement depending on the
    // installed version of Gradle. This dependency is documented at
    // http://tools.android.com/tech-docs/new-build-system/version-compatibility
    // and https://issues.apache.org/jira/browse/CB-8143
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
    repositories {
        mavenCentral()
        jcenter()
    }
} 

我改为:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }

    // Switch the Android Gradle plugin version requirement depending on the
    // installed version of Gradle. This dependency is documented at
    // http://tools.android.com/tech-docs/new-build-system/version-compatibility
   // and https://issues.apache.org/jira/browse/CB-8143
   dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
   }
}

// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

之后我能够使用正确的插件权限构建我的APK并使用我添加的插件。