获取未捕获的TypeError:使用Browserify与Nutritionix NodeJS客户端库时,fs.readdirSync不是一个函数

ale*_*234 6 javascript jquery node.js browserify pug

我正在尝试使用Node构建一个演示应用程序,并且我一直收到Uncaught TypeError:尝试使用Nutrionix NodeJS客户端库时,fs.readdirSync不是函数错误(https://github.com/nutritionix/nodejs-client-库)和Browserify.

我正在遵循本教程http://www.sitepoint.com/getting-started-browserify/直到使用Browserify输出部分,而不是使用Underscore和为main.js提供的代码,我正在使用Nutritionix NodeJS客户端库和main.js中的以下代码:

var NutritionixClient = require('nutritionix');

var nutritionix = new NutritionixClient({
    appId: '7c710fbd',
    appKey: 'a2f106128aa4b2ab81fd783fca5bf0ee'
    // debug: true, // defaults to false
});
Run Code Online (Sandbox Code Playgroud)

我使用Jade的HTML如下:

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content
    script(src='javascripts/nutri.js')
    script(src='javascripts/main.js')
Run Code Online (Sandbox Code Playgroud)

我在命令行中使用以下命令来构建一个使用Nutritionix的新JavaScript文件:

browserify public/javascripts/main.js -o public/javascripts/nutri.js
Run Code Online (Sandbox Code Playgroud)

当我在本地运行时,在控制台中,我得到Uncaught TypeError:fs.​​readdirSync不是nutri.js第465行中的函数,这是Browserify生成的文件.该行是以下函数中的第四行:

function readDirp(path, excludeList) {
    var lib = {};
    var expand = new Expander(path);
    var files = fs.readdirSync(path).map(expand);

    files.forEach(function(file){
        if (excluded(file.name, excludeList) === false) {
            lib[file.name.split('.').shift()] = require(file.location);
        }
    });

    return lib;
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我一直收到这个错误.当我浏览我在顶部链接的Browserify教程时,我可以使Browserified文件正常工作.如果我需要更多信息,请告知我们,非常感谢任何帮助.

Sha*_*oor 1

fs是一个用于文件系统操作的低级API,你不能像这样浏览它。您必须提供替代品,例如: https: //github.com/mafintosh/browserify-fs。由于您无法从浏览器访问客户端的文件系统,因此browserify-fs使用 LevelDB 来模拟文件系统。