当前位置: 首页 > 面试题库 >

我们可以在React Native应用程序中使用Node.js代码吗?

吴峰
2023-03-14
问题内容

我想将node js用作react native项目中的后端。


问题答案:

是的,您 可以 通过正确使用Big Rich的ReactNativify 使用为Node编写的包。但是要考虑一些事项:

1)我遵循在问题清单中找到的建议,并分为transformer.js两部分:

Transformers.js(在/config和中调用rn-cli.config.js):

const babelTransformer = require('./babel-transformer');

module.exports.transform = function(src, filename, options) {

    const extension = String(filename.slice(filename.lastIndexOf('.')));
    let result;

    try {

    result = babelTransformer(src, filename);

    } catch (e) {

    throw new Error(e);
    return;
    }

    return {
    ast: result.ast,
    code: result.code,
    map: result.map,
    filename
    };
};

babel-transformer.js(也在/config):

'use strict'

const babel = require('babel-core');

/**
 * This is your `.babelrc` equivalent.
 */
const babelRC = {
    presets: ['react-native'],
    plugins: [

    // The following plugin will rewrite imports. Reimplementations of node
    // libraries such as `assert`, `buffer`, etc. will be picked up
    // automatically by the React Native packager.  All other built-in node
    // libraries get rewritten to their browserify counterpart.

    [require('babel-plugin-rewrite-require'), {
        aliases: {
            constants: 'constants-browserify',
            crypto: 'react-native-crypto',
            dns: 'mock/dns',
            domain: 'domain-browser',
            fs: 'mock/empty',
            http: 'stream-http',
            https: 'https-browserify',
            net: 'mock/net',
            os: 'os-browserify/browser',
            path: 'path-browserify',
            pbkdf2: 'react-native-pbkdf2-shim',
            process: 'process/browser',
            querystring: 'querystring-es3',
            stream: 'stream-browserify',
            _stream_duplex: 'readable-stream/duplex',
            _stream_passthrough: 'readable-stream/passthrough',
            _stream_readable: 'readable-stream/readable',
            _stream_transform: 'readable-stream/transform',
            _stream_writable: 'readable-stream/writable',
            sys: 'util',
            timers: 'timers-browserify',
            tls: 'mock/tls',
            tty: 'tty-browserify',
            vm: 'vm-browserify',
            zlib: 'browserify-zlib'
        },
        throwForNonStringLiteral: true
    }],

    // Instead of the above you could also do the rewriting like this:

    ["module-resolver", {
      "alias": {
        "mock": "./config/mock",
        "sodium-universal": "libsodium"
      }
    }]
    ]
};

module.exports = (src, filename) => {

    const babelConfig = Object.assign({}, babelRC, {
    filename,
    sourceFileName: filename
    });

    const result = babel.transform(src, babelConfig);
    return {
    ast: result.ast,
    code: result.code,
    map: result.map,
    filename
    };
}

2)如您在上面的代码中所见,我还演示了如何使用babel-plugin-module-resolver

注意 ,我将使用该插件而不是ReactNative所使用的插件。它允许您引用本地文件,并用适当的引号书写允许使用非JS兼容名称,例如“
sodium-universal”

注意2
.babelrc按此评论所述寻求解决方案(可能是最干净的):https
:
//github.com/philikon/ReactNativify/issues/4#issuecomment-312136794

3)我发现我仍然需要.babelrc在项目的根目录中使用a
才能使Jest测试正常工作。有关详细信息,请参见此问题:https
:
//github.com/philikon/ReactNativify/issues/8



 类似资料:
  • 问题内容: 我知道Python提供了API,因此您可以在C代码中调用Python解释器,但是我想要的却是相反的。 我的程序需要使用一些C API,所以代码必须用C编写。但是我也想用Python打包程序。这意味着我想在Python中调用这些C函数或可执行文件。那可能吗? 如果我希望C代码成为一个库,这意味着我将它与Python 中的可能的链接一起使用,该怎么做?那可能吗?如果我将C代码写入可执行文件

  • 我是springboot的新手,目前正在尝试调试spring boot应用程序。有什么办法可以做到吗?

  • 我创建了一个基于 XML DSL 的 camel 应用程序,它部署在红帽保险丝中。现在,我想在Quarkus中开发和运行相同的应用程序。我的路线不是在夸克斯中启动的。 它在日志中显示以下消息。 共0条路线,其中0条已启动 为了检测到路由器并使其运行,我还应该做什么配置?

  • 问题内容: 我有一个C#应用程序和一个Node.js应用程序。我想在C#应用程序中按一个按钮,以将三个参数发送到Node.js应用程序/函数作为输入。这可能吗? 编辑: 两个应用程序在同一台计算机上运行。C#应用程序将为Node.js应用程序提供三个参数。Node.js应用程序将查询Web服务(POST),接收一些XML数据并处理该数据。我知道我也可以在C#中完成该任务,但是在这种情况下,它必须是

  • 我正处于使用SoapUI Pro学习Groovy的初始阶段。所以我开始在Groovy TestStep编辑器中编写简单的脚本,如下所示 当我通过单击SoapUI Pro中的“Run”按钮来执行此脚本时,它会抛出以下错误消息。 错误: nit.java:544AntlrParserPorg.codehaus.groovy.control.CSTIntoAST(AntlrParserPnit.comp

  • 专家们, 我正在尝试使用tables函数内的雪花程序。然而,它给我带来了一个错误。