【问题标题】:How to make a npm package out of a custom react-native native module for Android?如何使用 Android 的自定义 react-native 本机模块制作 npm 包?
【发布时间】:2016-04-20 08:52:43
【问题描述】:

我的一般问题:我为 react-native Android 构建了一个原生组件。它有自己的依赖关系等。我按照说明编辑 package.json,删除了 react-native 的依赖项,现在正在测试包。对于 react-native 的包,有什么具体要遵循的吗?


我得到的错误/警告:

假设我正在构建的模块名为react-native-mymodule

我运行的命令:

$ npm install react-native-mymodule $ rnpm link react-native-mymodule

运行react-native run-android时,在:react-native-mymodule:bundleReleaseJsAndAssets这一步会抛出以下错误:

module.js:341
    throw err;
    ^    

Error: Cannot find module '/path/to/my/test/project/node_modules/react-native-mymodule/node_modules/react-native/local-cli/cli.js'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:146:18)
    at node.js:404:3
:react-native-mymodule:bundleReleaseJsAndAssets FAILED

这是否意味着,我必须为我的原生模块生成一个签名的 APK?如果是这样,为什么在创建原生模块时需要这样做?

我另外四次收到以下警告:

WARNING: Dependency test_project:react-native-mymodule:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: /path/to/my/test_project/node_modules/react-native-mymodule/android/app/build/outputs/apk/react-native-mymodule-release-unsigned.apk

到目前为止,我在网络和 react-native 文档中的搜索均未成功。

【问题讨论】:

    标签: android npm react-native


    【解决方案1】:

    您可以向其他 react native 学习,例如 react-native-device-info,它是我能看到的最简单的 react-native 库之一,它只有 build.gradleAndroidManifest.xml 和两个 Java 类。

    package.json 中,你不需要 react-native 在依赖项中,只需将其放在 peerDependencies 部分,或者不要将其包含在 package.json 文件中。

    【讨论】:

    • 我没有 react-native 依赖,但它想搜索/node_modules/react-native/local-cli/cli.js'。我不知道为什么...
    • 你能在你的模块中显示你的build.gradle文件吗?只是一些关于apply plugin: "com.android.xxx" 的内容。我猜你的配置是com.android.application,不是com.android.library
    • 我确实有com.android.application 在那里。将其更改为 com.android.library 并没有帮助,还从 build.gradle 中删除其他不必要的东西也没有帮助..总是同样的错误..
    • 你能创建一个简化的项目来重现 GitHub 上的问题吗?不知道是什么问题,我创建了一些模块,使用了其他模块,没有出现这样的错误。
    • 好的,我会尽力做到这一点,并在我完成后在这里发布一个链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2023-02-24
    • 2020-04-04
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多