node js browserify实现

时间:2016-05-24 10:17:50

标签: javascript node.js npm browserify

我想在浏览器上使用我的自定义模块。例如,我有一个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不是函数(...)

怎么能解决这个问题呢? 你可以给我一些信息。

1 个答案:

答案 0 :(得分:0)

fs无法进行浏览化。但是,由于您的配置文件是JSON,并且您只使用fs来读取该文件,因此可以使用require()替换它:

var configuration = require(configurationFile);

此外,Browserify会将您的配置文件添加到捆绑包中。