React Js 需要 'fs'

Posted

技术标签:

【中文标题】React Js 需要 \'fs\'【英文标题】:React Js require 'fs'React Js 需要 'fs' 【发布时间】:2016-05-02 10:23:29 【问题描述】:

我有

import fs from 'fs'

在我的 package.json 中有

然后我运行命令

>  npm i fs
>  fs@0.0.2 node_modules/fs

接下来在我的 React 商店中导入“fs”模块

import fs from 'fs'

但是当我尝试使用 fs 时

除了构造函数和其他一些 __methods 之外,我没有看到其他方法。我没有看到 createReadStream 方法或任何其他文件操作方法。

有人知道怎么回事吗? (使用 Webpack)并且可以根据要求提供更多信息,但我已经走到了这一步......

ps:为什么我可以 npm i fs --save 阅读其他我不必这样做的帖子(使用节点 5.5.0)

import Reflux from 'reflux'
import AddItemActions from '../actions/AddItemActions'
import request from  'superagent-bluebird-promise'
import fs from 'fs'

var ImageStore = Reflux.createStore(
  init()
    .
    .
    .
  ,

  decryptImage(file) 
    var reader = new FileReader();
    var info = 
    reader.onload = (output) => 
      debugger
      request.post("https://camfind.p.mashape.com/image_requests")
        .set("X-Mashape-Key", "KEY")
        .set("Content-Type", "application/x-www-form-urlencoded")
        .set("Accept", "application/json")
        .send('focus':  'x': 480)
        .send('focus':  'y': 640)
        .send('image_request': 'altitude': 27.912109375)
        .send('image_request': 'language': "en")
        .send('image_request': 'latitude': 35.8714220766008)
        .send('image_request': 'locale' : "en_US")
        .send('image_request': 'longitude': 14.3583203002251)
        .send('image_request': 'image': fs.createReadStream("/path" + 'file.jpg'))
        .then(function (result) 
          console.log(result.status, result.headers, result.body);
          this.info = result
        ,
          function(error) 
            console.log(error);
        )
    

    reader.readAsDataURL(file);
    return info
  ,
  .
  .
  .
  .
)

【问题讨论】:

***.com/questions/24594796/… 的可能欺骗。 fs 是节点核心模块的一部分。 您希望在这里发生什么? fs 是一个与文件系统一起工作的节点模块。它的大多数方法在浏览器中都不起作用。 哦,我明白了......我想我可以在我的 react 应用程序中包含任何节点包......那么有 javascript 的等价物吗? 浏览器不允许访问文件系统。你想达到什么目的? 函数decryptImage。有一个参数 image_request[image] 接受文件流。我想通过我的反应发送它是应用程序 【参考方案1】:

这可能是环境问题。浏览器无法解释和运行某些 Node 服务器端模块,例如 fs

解决方案是在 Node 环境(服务器端)中运行 fs 方法,或者找到一个提供相同功能但为浏览器编写的包。

在这个问题中讨论过...... Module not found: Error: Cannot resolve module 'fs'

而这个问题... Use fs module in React.js,node.js, webpack, babel,express

【讨论】:

这是一个关于在客户端集成 fs 功能的好帖子。 ***.com/questions/46467858/…【参考方案2】:

create-react-app 中,他们删除了“fs”。你不能导入它。 他们这样做是因为fs 是一个节点核心模块。 您必须找到解决该问题的另一种方法。见this ticket.

【讨论】:

【参考方案3】:

npm i babel-plugin-preval

如果你想在 React 中使用 Node 的 fs,你可以在 React 中使用 prevail 像这样

const greetingContent = preval`
  const fs = require('fs')
  module.exports = fs.readFileSync(require.resolve('./greeting.txt'), 'utf8')
`
console.log(greetingContent);

【讨论】:

以上是关于React Js 需要 'fs'的主要内容,如果未能解决你的问题,请参考以下文章

错误 - ./node_modules/busboy/lib/main.js:1:0 找不到模块:无法解析“fs”

关于node.js需要注意的问题

node.js 使用fs模块对系统文件及目录进行读写操作

你如何在React应用程序中进行服务器端处理?

反应JS |将函数组件更改为基于类的引用错误

如果我不舒服,我真的需要使用 React.js 吗?