Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以为节点';是否在React Native中使用s fs.readFileSync()?_Javascript_Node.js_React Native_Browserify_Dat Project - Fatal编程技术网

Javascript 是否可以为节点';是否在React Native中使用s fs.readFileSync()?

Javascript 是否可以为节点';是否在React Native中使用s fs.readFileSync()?,javascript,node.js,react-native,browserify,dat-project,Javascript,Node.js,React Native,Browserify,Dat Project,我想移植一些为NodeJS编写的包,使其能够以本机方式进行响应 为此,我使用流行的Ignite样板创建了一个RN项目,然后使用该方法和shim Node API对象,主要是重用现有的 (有关详细信息和一些有用的提示,请参阅) 某些节点对象在传输后仍被替换为空模拟,例如fs。在.babelrc中完成,如下所示: ["module-resolver", { "alias": { "fs": "./config/mock", "sodium-univ

我想移植一些为NodeJS编写的包,使其能够以本机方式进行响应

为此,我使用流行的Ignite样板创建了一个RN项目,然后使用该方法和shim Node API对象,主要是重用现有的

(有关详细信息和一些有用的提示,请参阅)

某些节点对象在传输后仍被替换为空模拟,例如
fs
。在
.babelrc
中完成,如下所示:

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

        // etcetera
      }
    }]
到端口的包在其可传递依赖项中包含许多对fs.readFileSync的调用

例如,在其中一个示例中,有一行代码:

module.exports = protobuf(fs.readFileSync(path.join(__dirname, 'schema.proto'), 'utf-8'))
这是一个问题,因为Android和iOS不支持同步文件传输。那行代码在我看来是不可填充的

现在,虽然存在一个用于
fs
:但它没有实现同步文件系统方法

还有browserify转换,比如“browserify fs.readFileSync()静态资产内联线”(及其替代项和)

但我不知道如何将他们包括在内,他们是否会在RN工作

因此,我认为未来将有四种方法:

  • 找到一种方法将
    react本机级别fs
    brfs
    合并到可用的垫片替换件中
  • 编写一个全新的
    fs
    shim,其中包含所有方法
  • 如果同步fs不可能实现(我认为是这样),那么以某种方式覆盖调用同步方法的可传递依赖关系树中出现的所有函数,并用本地代码库中的js片段替换它们
  • 如果3的出现次数过多。然后决定不能将包移植到本地
  • 我希望是1。或者3。是有效的解决方案。有人能提供建议吗

    为了完整起见。我正处于人生的这个阶段:

    System
      platform           linux                                                                                                
      arch               x64                                                                                                  
      cpu                4 cores   Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz                                                        
    
    JavaScript
      node               7.10.1       /usr/local/bin/node  
      npm                4.2.0        /usr/local/bin/npm   
      yarn               0.24.6       /usr/bin/yarn        
    
    React Native
      react-native-cli   2.0.1       
      app rn version     0.45.1      
    
    Ignite
      ignite             2.0.0        /usr/local/bin/ignite  
    
    Android
      java               1.8.0_111    /usr/bin/java  
      android home       -            undefined 
    

    否。对于节点的
    fs.readFileSync
    ,没有合理的替代方案

    虽然从技术上讲,可以编写阻止异步文件操作的
    readFileSync
    shim,但在异步系统中强制执行同步行为是不可取的(但是,当一次性初始化代码中只有很少的同步方法时,您可以不受影响)

    因此,选择3或4是唯一可行的选择

    在我的例子中,有太多的节点依赖关系,所以我放弃了浏览/填充,选择了4。但是

    这并不意味着一切都会失去。我现在正在调查


    (和)。

    您可能希望将dat标记添加到此问题中(我今天创建了dat、dat项目和hyperdrive标记)。我可以编辑帖子,但只允许5个标签,我不想弄乱你的标签;)酷!完成了,我有一个空闲时隙:)PS考虑<代码> DAT< /COD>和<代码> DAT Project 几乎同义(如果没有得到足够的流量,标签会被删除)。我们将看看哪一个幸存下来。在我接受之前,你更喜欢dat项目。还不确定我是怎么想的。我有点喜欢dat,但也知道dat项目更具体,也与主页相匹配。我现在确保在这两个网站上都放了相同的wiki内容。请同时注意:填充不可行,现在正在研究