我想在浏览器上使用我的自定义模块。例如,我有一个AppConfig.js模块
'use strict'
var fs, configurationFile;
configurationFile = './configs/appConfig.json';
fs = require('fs');
var AppConfig = function(){
function getMongoDbConnectionString()
{
var configuration = JSON.parse(
fs.readFileSync(configurationFile)
);
var connectionString= configuration.mongodbConnectionString;
return connectionString;
}
function getDistanceCondition()
{
var configuration = JSON.parse(
fs.readFileSync(configurationFile)
);
var distance= configuration.distanceBetweenTwoArmatures;
return distance;
}
return {
getMongoDbConnectionString : getMongoDbConnectionString,
getDistanceCondition:getDistanceCondition
};
}
module.exports = AppConfig;
我想在浏览器上使用这些模块。为此,我安装了browserify模块。
npm install -g browserify
然后转到app目录并运行此命令
browserify -r ./modules/AppConfig.js:AppConfig> ./public/javascripts/bundle.js
然后我在我的html文件中添加这一行。
<script src="/javascripts/bundle.js"></script>
现在我想在我的javascritp函数上使用这个模块。
var Configuration = require('AppConfig');
var configuration = new Configuration();
var connectionString= configuration.getDistanceCondition();
我调用了getDistanceCondition()函数但是ı出错:
未捕获(承诺)TypeError:fs.readFileSync不是函数(...)
怎么能解决这个问题呢? 你可以给我一些信息。
答案 0 :(得分:0)
fs
无法进行浏览化。但是,由于您的配置文件是JSON,并且您只使用fs
来读取该文件,因此可以使用require()
替换它:
var configuration = require(configurationFile);
此外,Browserify会将您的配置文件添加到捆绑包中。