2016-11-07 126 views
0

我已經繼承了一個使用NodeJS構建它的項目。幾個月來,一切都很好。我們已經建立了許多生產版本,沒有任何問題。Gulp/NodeJS:在Ubuntu上Require('fs')失敗,但在Windows上工作

輸入xlsx.js.

由於添加此包作爲依賴項,我們發現我們的Gulp構建適用於Windows,但不適用於Ubuntu(它是我們的構建機)。當我們構建在Ubuntu上,RequireJS barfs的要求(「FS」):

[email protected]:~/dev/eVGM-JavaScript-Client$ node --version 
v4.6.1 
[email protected]:~/dev/eVGM-JavaScript-Client$ gulp test 
[15:19:35] Using gulpfile ~/dev/eVGM-JavaScript-Client/gulpfile.js 
[15:19:35] Starting 'test'... 
[15:19:35] Starting 'run-tests'... 
07 11 2016 15:19:40.236:WARN [karma]: No captured browser, open http://localhost:9876/ 
07 11 2016 15:19:40.298:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/ 
07 11 2016 15:19:40.308:INFO [launcher]: Starting browser PhantomJS 
07 11 2016 15:19:41.421:INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: Connected on socket Hq69p1CiIhcsCDOGAAAA with id 72071968 
07 11 2016 15:19:41.596:WARN [web-server]: 404: /base/jspm_packages/system-polyfills.js 
07 11 2016 15:19:43.457:WARN [web-server]: 404: /base/fs.js 
PhantomJS 2.1.1 (Linux 0.0.0) ERROR 
    Error: (SystemJS) XHR error (404 Not Found) loading /home/johnny/dev/eVGM-JavaScript-Client/fs.js 
Error loading /home/johnny/dev/eVGM-JavaScript-Client/fs.js as "fs" from /home/johnny/dev/eVGM-JavaScript-Client/jspm_packages/github/sheetjs/[email protected]/xlsx.js 

PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 0 ERROR (2.27 secs/0 secs) 

從我可以告訴,「FS」是一個內置的包的NodeJS。 (對吧?)它應該在那裏。然而這不符合Gulp的說法。

如果我輸入Node並在節點提示符處輸入「require('fs')」,我會得到大量文本,告訴我Node正在查找軟件包A-OK。

也許這是一個問題。也許這是一個Ubuntu問題。也許這是傑夫的一個白癡問題。無論出於何種原因,我無法讓我們的構建從Gulp中找到fs,而只能在Ubuntu上找到fs。

任何幫助非常非常感激地接受......

感謝, 傑夫

+0

難道這是某種路徑問題?換句話說,fs.js是否駐留在我們的Windows安裝知道的一些神奇的NodeJS目錄中,但我們的Ubuntu安裝不? –

回答

0

好吧,我理解了它,通過一些相關的StackOverflow的答案挖。

require('fs')僅用於服務器應用程序。畢竟,瀏覽器的文件系統是什麼?在這種情況下沒有意義。如果我一直在用我的大腦,我會意識到這一點。

所以我看着圖書館使用FS在那裏,它在一個地方只有:

var fs; 
function readFileSync(filename, options) { 
  if(fs === undefined) fs = require('fs'); 
  return parse(fs.readFileSync(filename), options); 
} 

我在那裏停留的警報並運行我們所需要的代碼;警報沒有被調用。

這意味着,即使fs.js是加載它實際上不是在瀏覽器爲我們的應用程序執行時使用

因此,下一步可能是製作庫(叉)的自定義版本並刪除該單一功能。我們不需要它,它打破了我們的構建,所以我們可以擺脫它。

這是否有意義?

傑夫

0

不要叉,圖書館,是您在客戶端和服務器端的製作,這是正常的發現這一點。

我已經繼承了使用NodeJS構建它的項目。 幾個月來,我們一切都很好。我們已經建立了一個號碼 生產版本沒有問題。

繼承這些天:)

所以糾正我,如果我錯了,這是一個JavaScript客戶端項目,一飲而盡建立(使用節點)。 您添加了xslx,並且您的測試在Windows上可以正常工作,但不能在Ubuntu上運行。

我的第一個嫌疑人是phantomJS。檢查您的版本。這可能與https://github.com/SheetJS/js-xlsx/issues/184

+0

有趣的思想! 是的,我有一個用Gulp建立的客戶端項目,其行爲與您所說的完全相同。我會查看該鏈接!謝謝! –

+0

哦,但是等一下。我只記得:我在Karma嘗試了使用Firefox的測試,而是遇到了同樣的問題。我不記得我的瀏覽器引擎phylogeny,所以我認爲它可能遭受同樣的問題... –

+0

你也可能會缺少墊片,如https://github.com/jvilk/BrowserFS或jszip –

相關問題