添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm getting a 'fs.readFileSync is not a function' in Chrome debugger after trying to call readFileSync();

I call it...

const fs = require('fs');

call the function...

let content = fs.readFileSync('/path/to/my/file.stuff');

And attempt to display content..

console.log(content);

I get nothing. When I do...

console.log(fs);

I appear to get a generic javascript object... I'm completely stuck.

Meteor version: 1.5.1 npm version: 3.10.10 node version: v6.10.1

it's actually a custom .info file. It just has data in each line that needs to be split up into an array. – VocoJax Aug 2, 2017 at 17:07

Thanks for all the answers!

I have confirmed that you cannot use fs on the client side.

Instead, I made another local simple express node api and the react web app just makes a request back to the node api to get that data.

Also, you have to do this...

https://enable-cors.org/server_expressjs.html

EDIT:

Wrote this a long time ago. 3 years back when I was just starting my web development learning. Just want to update and say that there is a serious fundamental difference between what the user sees and what the server sees. Allowing the front-end (Meteor, React, Angular, etc.) to read files would be a super serious security issue. Anyone could make a website that when a user goes to it, it would just read your local computers files. Not good...

While this is super obvious to me now, it wasn't obvious 3 years ago. So for all you newbies out there, it's okay :) No question is a dumb question.

I'm getting a 'fs.readFileSync is not a function' in Chrome debugger after trying to call readFileSync();

fs will not work in the browser. This is by design as to protect your filesystem from potential security threats.

Using low level Node packages in a browser environment

If you need access to this in a browser environment, consider making use of Electron which allows you to make use of OS level NodeJS packages in a running instance of Chromium.

fs cannot be used on the client, due to browsers restricting some javascript code.

If your code is being run on both the server and client, you can use:

if (Meteor.isClient) return;

to avoid the error. Otherwise, there should be another way to do what you're trying to accomplish, such as importing required JSON.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.