React Native:无法解析模块fs

时间:2016-08-19 19:29:38

标签: npm react-native

Unable to resolve module fs from /...mypath

尝试将节点模块导入到react-native应用程序时出现此错误。

模块以这种方式使用'fs':

var fs = require('fs');
var list = JSON.parse(fs.readFileSync(__dirname + '/list.json', 'utf8'));

4 个答案:

答案 0 :(得分:12)

我最终使用' rn-nodeify '将fs包含在React Native中。您可以使用此方法的大多数节点核心模块。用npm安装它:

npm install rn-nodeify

然后在 package.json 文件中,在“脚本”中添加以下行,以指定要包含在RN项目中的模块。例如,我使用 fs 加密 https ,然后该行

"postinstall": "node_modules/.bin/rn-nodeify --install crypto,fs,https --hack"

答案 1 :(得分:11)

React Native应用程序不在Node.js环境中运行(它仅由打包程序用于实际提供和编译应用程序包)。

由于您的应用程序在iPhone或Android上的JS VM中运行,因此访问文件系统的唯一方法是使用react-native-fs或利用桥接连接与平台特定本机API通信的任何其他第三方模块。

答案 2 :(得分:0)

安装react-native-fs(按照de link上的说明进行操作),以便避免错误持续存在,请在目录('./node_modules/tfjs-image-recognition-base/build/commonjs/env/)中输入通过文件:(creatFileSystem.js)并编辑:

fs = require('fs')

收件人:

fs = require('react-native-fs')

我不知道这是否是推荐的方法,但这是唯一对我有用的方法。

答案 3 :(得分:0)

如果要导入json列表,则直接将其调用。

示例:

  1. 从'./assets/dataSource/subscriptionData.json'导入subscriptionData; 或
  2. var subscriptionData = require('./ assets / dataSource / subscriptionData.json');

您无需进行转换,就可以用来导入数据或所需的方式。

else