Javascript 是否可以为节点';是否在React Native中使用s fs.readFileSync()?
我想移植一些为NodeJS编写的包,使其能够以本机方式进行响应 为此,我使用流行的Ignite样板创建了一个RN项目,然后使用该方法和shim Node API对象,主要是重用现有的 (有关详细信息和一些有用的提示,请参阅) 某些节点对象在传输后仍被替换为空模拟,例如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
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,其中包含所有方法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内容。请同时注意:填充不可行,现在正在研究