【问题标题】:How to use node modules with React Native如何在 React Native 中使用节点模块
【发布时间】:2015-09-28 02:33:43
【问题描述】:

我是 React Native 的新手,想在我正在玩的 React Native 应用程序中使用节点模块。

我想添加的节点模块是这样的: https://www.npmjs.com/package/swisseph

所以我进入项目文件夹并运行npm install swisseph

在应用程序源代码中我添加了这个:

var swisseph = require ('swisseph');

我运行了这个项目,我得到了这个错误:

Invariant Violation: Application AwesomeProject has not been registered.
This is either due to a require() error during initialisation or failure to call AppRegistry.registerComponent.

如何在 React Native 中使用节点模块?

index.io.js 文件有以下代码:

    /**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';

var React = require('react-native');
var swisseph = require ('swisseph');

var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;

var AwesomeProject = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.ios.js
        </Text>
        <Text style={styles.instructions}>
          Press Cmd+R to reload,{'\n'}
          Cmd+D or shake for dev menu
        </Text>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

【问题讨论】:

  • 你的index.ios.js是什么样的?
  • 您好,我在上面的 index.ios.js 中添加了代码...谢谢...
  • 它说 AwesomeProject not swisseph 所以这个特定的错误可能不是由新添加的模块引起的。尝试此处提供的解决方案 stackoverflow.com/questions/29287987/… 当我遇到 has not been registered 错误时,这对我有用。

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


【解决方案1】:

我会尝试使用 chrome 调试器运行它。在你到达之前可能有一些问题导致你的 JS 崩溃:

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

要打开 chrome 调试,请点击 command+d,然后点击 Debug in Chrome。这应该会打开 chrome,其中包含有关如何查看控制台输出的说明。

【讨论】:

  • 嗨,是的...它是 var swisseph = require ('swisseph');这导致它崩溃。那是我想添加到我的项目中的节点模块。如何正确添加?
  • 看了 swisseph 之后,你可能会倒霉。它看起来好像作为它安装的一部分,它使用“node-gyp rebuilt”来编译 C++ 代码以供 JavaScript 使用。不幸的是,React-Native 没有在你的 iPhone 上运行 nodejs 服务器,所以你真的无法访问 nodejs 的所有荣耀。您的应用程序正在崩溃,因为它找不到必要的本机绑定。您可以选择的一种方法是将 swisseph C++ 代码添加到您的项目中,确保公开必要的绑定以供 React-Native 使用。见moduscreate.com/react_native_custom_components_ios
猜你喜欢
  • 2022-08-09
  • 2017-08-03
  • 2021-07-15
  • 1970-01-01
  • 2022-01-08
  • 2019-10-24
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多