获取未捕获的类型错误:将 Browserify 与 Nutritionix NodeJS 客户端库一起使用时,fs.readdirSync 不是函数

新手上路,请多包涵

我正在尝试使用 Node 构建一个演示应用 程序,但 在尝试使用 Nutrionix NodeJS 客户端库( 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
});

我使用 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')

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

 browserify public/javascripts/main.js -o public/javascripts/nutri.js

当我在本地运行时,在控制台中,我得到 Uncaught TypeError: fs.readdirSync is not a function in line 465 of nutri.js,这是 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;
}

我不确定为什么会不断收到此错误。当我浏览顶部链接的 Browserify 教程时,让 Browserified 文件正常工作没有问题。如果需要我提供更多信息,请告诉我,非常感谢任何帮助。

原文由 alejandroj1234 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 399
1 个回答

使用 brfshttps://github.com/browserify/brfs

fs.readFileSync() 和 fs.readFile() 静态资产 browserify 转换

此模块是 browserify 的一个插件,用于解析 fs.readFileSync() 调用的 AST,以便您可以将文件内容内联到您的包中。

尽管此模块旨在与 browserify 一起使用,但它并没有特别针对 browserify,因此它应该在其他项目中普遍有用。

原文由 bxtx999 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题