【问题标题】:react-native 中的节点模块
【发布时间】:2017-08-03 17:45:35
【问题描述】:

我刚刚尝试将一些节点模块添加到 react-native 中。 我发现它只适用于 react-native modulesreact-native link 这些模块。

我想使用: - https://www.npmjs.com/package/node-google-image-search 要么 - https://www.npmjs.com/package/first-image-search-load

我试过了: Link1Link2Link3Link4

当我将命令链接与“非反应模块”一起使用时,我仍然一无所获:

另外,当我试图通过以下方式添加此模块时:

  1. import 'first-image-search-load'
  2. import {saveFirstImage} from 'first-image-search-load'
  3. import * from 'first-image-search-load'
  4. var first-image-search-load = require('first-image-search-load');
  5. var first-image-search-load = require('./first-image-search-load');
  6. var first-image-search-load = require('./node-modules/first-image-search-load');

并尝试将它们放入 index.android.js 我得到:

开发服务器返回响应错误码:500

网址: http://10.0.2.2:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false

Body: {"message":"无法解析模块 https 来自 /Users/Pien/Projects/smog_bielsko/node_modules/node-google-image-search/index.js: 模块映射或这些目录中不存在模块:\n /Users/Pien/Projects/smog_bielsko/node_modules/node-google-image-search/node_modules\n, /Users/Pien/Projects/smog_bielsko/node_modules\n\n这可能是 与https://github.com/facebook/react-native/issues/4968相关@\nTo 解决尝试以下方法:\n 1. 清除守望者手表:watchman watch-del-all。\n 2. 删除 node_modules 文件夹:rm -rf node_modules && npm install。\n 3. 重置打包程序缓存:rm -fr $TMPDIR/react-*npm start -- --reset-cache。", "name":"UnableToResolveError","type":"UnableToResolveError","errors":[{}]} 响应 DevServerHelper.java:323 执行 RealCall.java:126 运行 NamedRunnable.java:32 runWorker ThreadPoolExecutor.java:1113 运行 ThreadPoolExecutor.java:588 运行 线程.java:818

请告诉我如何将普通的 npm 插件导入 react-native..

谢谢

【问题讨论】:

  • 请发布文字,而不是图片。

标签: javascript node.js reactjs react-native react-native-android


【解决方案1】:

Big Rich 提供的答案的一些附加信息。

我不认为您遇到的错误可以通过应用 ReactNativify 匀场方法来解决。否则错误会提到缺少 Node API 对象。

但是,如果您的 first-image-search-node 包是为 Node 编写的,并且您确实想使用 ReactNativify,那么您应该注意一些其他问题,我在此处记录了这些问题:

Can we use nodejs code inside react native application?

简而言之,它突出显示:

  1. 一种将转换器拆分为 2 个文件的方法。
  2. 建议使用“babel-plugin-module-resolver”
  3. .babelrc 中写下你所有的垫片替换,而不是 js 代码
  4. 应该包括一个根.babelrc,即使你有transformer.js

【讨论】:

【解决方案2】:

实际上,ReactNativify 项目应该做到这一点,让我们在 React-Native 代码项目 (RN) 中使用 NodeJS 模块。

在我写这篇文章时,2017 年 5 月,project seems to not work with RN versions 0.43.3+, due to breaking changes

【讨论】:

    【解决方案3】:

    您不需要链接不使用本机代码的包。对于只有 js 的库,你需要做的就是npm install packageName。如果库有任何 html/css/dom 内容,那么它将无法与 react native 一起使用。

    【讨论】:

    • 我也是这么想的。但是当我检查 lodash- 它工作但与这两个没有。是包裹的问题吗?我应该怎么做,修复这些模块以在 react-native 上使用它?
    • 哦,这些包需要在节点服务器上运行。您将无法将它们与本机反应一起使用。尽管 react native 在节点上运行,但它无法访问这些库使用的 https 和 fs 等节点 API。
    • 噢.. 很高兴知道。 Tnx @Matt Aft。为将来。如何识别我可以在 react-native 上使用哪个模块(它具有来自 Node 的依赖项)?
    • 您必须查看库的代码,其中一个需要“fs”,另一个需要“https”,它们都适用于 nodejs。
    • 是的,我明白 ;) 但我只是要求将来的插件。我如何识别哪些需求来自节点?
    猜你喜欢
    • 2015-09-28
    • 2022-01-08
    • 2022-08-09
    • 2021-12-14
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多