2016-05-24 145 views
0

我想在瀏覽器上使用我的自定義模塊。例如我有一個AppConfig.js模塊node js browserify implementation

'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()函數,但我採取了一個錯誤:

未捕獲的(以諾)類型錯誤:fs.readFileSync不是一個函數(...)

我該怎麼修復這個問題 ? 可以給我一些信息。

+0

您認爲您可以在瀏覽器中使用該mongodb連接字符串執行什麼操作?順便說一句,你可能不希望所有的用戶都看到它... –

+0

我會從這個模塊中刪除mongodb連接字符串,這並不重要。首先,我想成功運行此代碼。 。 。 – AsimTurgut

回答

0

fs無法瀏覽。然而,由於您的配置文件是JSON和你只使用fs讀取該文件,您可以通過使用require()替換:

var configuration = require(configurationFile); 

隨着額外的好處,Browserify將您的配置文件添加到包。

+1

這不會結束。在提供配置文件和連接MongoDB之間,這看起來像XY問題的開始。 –

+0

@DenysSéguret我錯過了MongoDB的一部分。除非OP的意圖是使用MongoDB的(有限的)REST接口,否則這確實會成爲問題。 – robertklep