React Native:无法解析模块 fs
Posted
技术标签:
【中文标题】React Native:无法解析模块 fs【英文标题】:React Native: Unable to resolve module fs 【发布时间】:2016-12-27 01:13:16 【问题描述】:Unable to resolve module fs from /...mypath
尝试将节点模块导入我的 react-native 应用程序时出现此错误。
模块以这种方式使用'fs':
var fs = require('fs');
var list = JSON.parse(fs.readFileSync(__dirname + '/list.json', 'utf8'));
【问题讨论】:
你做了npm install fs --save
吗?
fs 是节点核心模块之一。我不认为我需要安装它。不过感谢您的快速回复。
【参考方案1】:
我最终使用 'rn-nodeify' 将 fs 包含到 React Native 中。您可以使用这种方法的大多数节点核心模块。使用 npm 安装它:
npm install rn-nodeify
然后在 package.json 文件中,在“scripts”中添加以下行来指定要包含在 RN 项目中的模块。比如我用了fs、crypto和https,就行了
"postinstall": "node_modules/.bin/rn-nodeify --install crypto,fs,https --hack"
【讨论】:
对我来说,当我安装并尝试使用"@google-cloud/vision": "0.11.0"
时出现错误。不幸的是,这个 hack 没有帮助。
@gumkins,您是否找到解决方案或提醒 google-cloud 团队注意该问题?我在 react-native 客户端上的视觉 api 也有同样的问题。
不幸的是,这个 hack 对我也不起作用,我正在尝试在 react-native expo 项目中使用 "mssql-s-s-rs": "^1.3.12" "expo": "^ 35.0.0"【参考方案2】:
React Native 应用程序不在 Node.js 环境中运行(它仅由打包程序用于实际服务和编译您的应用程序包)。
由于您的应用在 iPhone 或 android 上的 JS VM 中运行,因此访问文件系统的唯一方法是使用 react-native-fs
或任何其他利用桥接连接与平台特定本机 API 对话的第三方模块。
【讨论】:
谢谢,tls 模块怎么样?我似乎找不到替代方案。你碰巧知道吗? 在所有情况下,请考虑 ios/Android 而不是 Node.js。你需要一个封装原生 API 的模块,尝试寻找一个 - 如果没有,你需要一些原生知识来自己封装它。【参考方案3】:安装react-native-fs(按照de链接的说明操作),所以如果错误仍然存在,请进入目录('./node_modules/tfjs-image-recognition-base/build/commonjs/env/)搜索文件:(creatFileSystem.js)和编辑:
fs = require('fs')
到:
fs = require('react-native-fs')
我不知道这是否是推荐的方式,但它是唯一适合我的方式。
【讨论】:
【参考方案4】:我花了一段时间才找到问题,我分享它,因为它可能对将来的参考有用(在 Expo 中使用 react native):
我的一位同事不小心在项目根目录中导入了我们的一个反应组件 app.config.js
以读取一些配置,而不是使用 expo-constants
。
导致它从明显没有fs
lib.. 这是我们app.config.js
的第一行:
import 'dotenv/config';
在app.config
中读取设置的正确方法是:
import Constants from 'expo-constants';
const appConfig = Constants.manifest;
【讨论】:
【参考方案5】:如果要导入 json 列表,直接调用即可。
例子:
-
从'./assets/dataSource/subscriptionData.json'导入订阅数据;
或
var subscriptionData = require('./assets/dataSource/subscriptionData.json');
你不需要转换它,你可以用来导入你的数据或者你想要的方式。
function installJson()
console.log("Iniciando Importação");
subscriptionData.forEach(item =>
firestore().collection('subscription').add(item);
);
subscriptionData.json
[
"code": 325,
"name": "bla bla bla"
,
"code": 356,
"name": "ble ble ble"
]
【讨论】:
以上是关于React Native:无法解析模块 fs的主要内容,如果未能解决你的问题,请参考以下文章
无法解析模块'./core/theming' React-native cli
React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault