我正在尝试使用 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 许可协议
使用
brfs
, https://github.com/browserify/brfsfs.readFileSync() 和 fs.readFile() 静态资产 browserify 转换
此模块是 browserify 的一个插件,用于解析 fs.readFileSync() 调用的 AST,以便您可以将文件内容内联到您的包中。
尽管此模块旨在与 browserify 一起使用,但它并没有特别针对 browserify,因此它应该在其他项目中普遍有用。