简体   繁体   中英

Cannot read property 'map' of undefined in node js

I am getting error Cannot read property 'map' of undefined.I don't know how to fix it, can you help?

I download code from https://github.com/alonesuperman/react-native-svg-src

C:\\Users\\MONSTER\\Desktop\\React\\mathero\\src\\assets\\getSvg.js:22 Promise.all(files.map(filename => readfile(filename))) ^

 TypeError: Cannot read property 'map' of undefined at C:\\Users\\MONSTER\\Desktop\\React\\mathero\\src\\assets\\getSvg.js:22:25 at FSReqWrap.oncomplete (fs.js:135:15) C:\\Users\\MONSTER\\Desktop\\React\\mathero\\src\\assets>node getSvg.js C:\\Users\\MONSTER\\Desktop\\React\\mathero\\src\\assets\\getSvg.js:22 Promise.all(files.map(filename => readfile(filename))) ^ TypeError: Cannot read property 'map' of undefined at C:\\Users\\MONSTER\\Desktop\\React\\mathero\\src\\assets\\getSvg.js:22:25 at FSReqWrap.oncomplete (fs.js:135:15)

My error code :

//  getSvg.js
var fs = require('fs');
var path = require('path');
const svgDir = path.resolve(__dirname, './SVGFOLDER');

function readfile(filename) {
  return new Promise((resolve, reject) => {
    fs.readFile(path.join(svgDir, filename), 'utf8', function (err, data) {
      console.log(data.replace(/<\?xml.*?\?>|<\!--.*?-->|<!DOCTYPE.*?>/g, ''));
      if (err) reject(err);
      resolve({
        [filename.slice(0, filename.lastIndexOf('.'))]: data,
      });
    });
  });
}

function readSvgs() {
  return new Promise((resolve, reject) => {
    fs.readdir(svgDir, function (err, files) {
      if (err) reject(err);
      Promise.all(files.map(filename => readfile(filename)))
        .then(data => resolve(data))
        .catch(err => reject(err));
    });
  });
}

readSvgs().then(data => {
  let svgFile = 'export default ' + JSON.stringify(Object.assign.apply(this, data));
  fs.writeFile(path.resolve(__dirname, './svgs.js'), svgFile, function (err) {
    if (err) throw new Error(err);
  })
}).catch(err => {
  throw new Error(err);
});

i it's okay

const svgDir = path.resolve(__dirname, './SVGFOLDER');

to

const svgDir = path.resolve(__dirname, './sorusvg');

sorusvg is my file :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM