2014-02-25 116 views

回答

2

是否想從Web服務器或本地文件系統讀取JSON文件?沒有人能夠給出一個從Plunker的本地文件系統加載的例子,因爲它在Web瀏覽器中運行並且被拒絕訪問文件系統。

下面是如何從磁盤加載一個JSON文件中的任何Node.js的程序爲例,這應該噶/茉莉花工作:

var fs = require('fs'); 
var filename = './test.json'; 

fs.readFile(filename, 'utf8', function (err, data) { 
    if (err) { 
     console.log('Error: ' + err); 
     return; 
    } 

    data = JSON.parse(data); 

    console.dir(data); 
}); 
+0

我加載外部JSON數據文件想要從本地系統訪問任何(* .json)文件使用karma/jasmine進行angularJS測試 – user2573410

+0

我認爲上面的代碼應該適合你。 – JBCP

+0

jasmine.getFixtures()。fixturesPath ='base/test /'; (jasmine.getFixtures()。read(「staticData.json」));方法如下:staticData = JSON.parse(jasmine.getFixtures – Daniela

5

設置的路徑來尋找您的文件,在這種情況下,我的文件(staticData.json)位於/ test文件夾下。

jasmine.getFixtures().fixturesPath = 'base/test/'; 
staticData= JSON.parse(jasmine.getFixtures().read("staticData.json")); 

你也必須添加模式在karma.conf.js文件,是這樣的:

{ pattern: 'test/**/*.json', included: false, served: true} 
1

可以使用需要

var data = require('./data.json'); 
console.log(data); 
// Your test cases goes here and you can use data object
+0

這個答案爲什麼downvoted?似乎是對我來說有效的替代方案。不需要使用'require'的一些原因? – MondKin

+0

@MondKin,我在測試文件中始終使用require來提取必要的庫和資源。我不知道爲什麼這是downvoted。我剛剛投票。 –

+0

我想補充一點,如果你想要一個沒有.js擴展名的文件,你需要在使用require時使用一個技巧。上面的例子不一定會起作用,因爲'.js'將被追加到最後,並且無法找到'data.json.js'。解決方法是添加一個假的URL參數,如'require('./ data.json?test =')'。這將變成'data.json?test = .js',它仍然會找到文件。 –

相關問題