【问题标题】:Invalid package.json in Custom cordova plugin自定义科尔多瓦插件中的 package.json 无效
【发布时间】:2016-11-13 08:39:46
【问题描述】:

我正在尝试在 cordova 中开发一个自定义插件,它可以在每个指定的时间间隔为我提供位置。问题是我在这个插件目录中没有任何 package.json 文件。

当我尝试将此插件添加到我们的 cordova 项目中时,我收到 Invalid package.json 错误。

请帮助我,我是科尔多瓦的新手。我必须做些什么来解决这个错误。

我正在使用这个命令在项目中添加插件

cordova plugin add ../loccation_plugin/LocationPlugin/

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    我在将自定义插件添加到项目时遇到了同样的问题。 我正在使用 plugman 工具创建自定义插件,您很可能也在使用 plugman 工具。

    如果是这种情况,则执行以下命令以生成有效的package.json

    plugman createpackagejson "path of your plugin"
    

    这会问你一些关于插件的基本问题,并会根据它生成 package.json 文件。

    【讨论】:

    • 请帮助我,我已添加到该目录中,但它显示错误,例如“未定义 pkg”,..,,
    • "pkg" 未定义
    • 这是 plugman cli 中的一个错误,最近已得到解决。请检查以下网址:github.com/apache/cordova-lib/pull/597
    【解决方案2】:

    我遇到同样的'pkg is not defined'问题,然后我尝试使用npm init创建package.json文件并成功。

    【讨论】:

    • 经过测试,这工作。转到插件的本地目录,使用默认值运行 npm init,然后返回到您的 cordova 目录并运行“cordova plugin add
    【解决方案3】:

    我也遇到了同样的问题,但是改用了npm init,按回车并按照cmd上的要求填写数据

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误。

      按照answer中的推理,我意识到当我们尝试从文件夹安装cordova插件时:目标文件夹的名称必须与插件ID相同

      【讨论】:

        【解决方案5】:

        在使用自定义插件时,我在 Windows 中遇到了同样的问题,似乎插件的位置是问题所在(本地磁盘位置)。

        例如,Cordova 项目位于E:/projects/cordova-project,我在 2 个不同的磁盘中有一个插件:

        • 自定义插件主:C:/plugins/myawesome-plugin-name
        • 自定义辅助插件:E:/plugins/myawesome-plugin-name

        虽然项目和插件位于同一个磁盘,如果我从E:磁盘安装插件:

        cordova plugin add E:/plugins/myawesome-plugin-name
        

        会抛出异常,但是如果我从 C: 盘安装它:

        cordova plugin add C:/plugins/myawesome-plugin-name
        

        那么插件应该安装成功了:

        请注意,插件是相同的,但在不同的文件夹和磁盘中...... 这很奇怪,但这解决了我的问题。

        【讨论】:

          【解决方案6】:

          cygwin 中运行此命令后出现此错误。我的解决方案是从cmd 运行cordova 命令。与其他有关此错误的帖子一样,插件的路径存在问题。

          【讨论】:

            【解决方案7】:

            我通过使用 Plugman 实用程序生成一个 package.json 文件解决了这个问题,我还必须将我的插件从我的 Cordova 项目中的子目录移动到我的 Cordova 项目的根目录。

            换句话说,我将插件从:

            my-cordova-project/extras/plugins

            到:

            my-cordova-project

            【讨论】:

              【解决方案8】:

              使用 plugman 代替 cordova 安装您的插件 例如我的插件是

              hello-plugin
              

              现在我在 hello-plugin 的父文件夹中

              plugman install --platform android --project platforms/android --plugin ./hello-plugin
              

              您可以将android更改为您要安装的其他平台,例如ios

              如果安装成功,你会在

              找到你的插件
              <project-name>\platforms\android\cordova\plugins
              

              为了更清楚

              我在 Windows 中制作了一个批处理文件,以明确创建插件以使用 plugman 安装插件。您可以复制下面的代码并将其放入 anyname.bat (并放入您的“项目文件夹/”中) 您可以根据需要修改代码。下面的代码,我只修复了Android的命令

              @echo off
              SET/P pluginName=Please input plugin name: 
              call plugman create --name %pluginName% --plugin_id %pluginName% --plugin_version 1.0.0
              call cd %pluginName%
              call plugman platform add - -platform_name android
              call plugman createpackagejson .
              call cd ..
              call plugman install --platform android --project platforms/android --plugin ./%pluginName% 
              

              参考 https://cordova.apache.org/docs/en/latest/plugin_ref/plugman.html

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-10-13
                • 1970-01-01
                • 2016-08-30
                相关资源
                最近更新 更多