2016-11-07 3 views
0

NodeJSを使用してビルドを行うプロジェクトを継承しました。何ヶ月も私たちのためにすべてがうまくいっています。私たちは何の問題もなく数多くのプロダクションリリースを作りました。Gulp/NodeJS:UbuntuでRequire( 'fs')が失敗するが、Windowsで動作する

xlsx.jsと入力します。

このパッケージを依存関係として追加して以来、私たちのGulpビルドはWindowsでは動作しますが、Ubuntu(私たちのビルドマシン)では動作しません。我々はUbuntuの上でビルドを行うと、RequireJSは(「FS」)必要にbarfs:

[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によるものではない。

ノードを入力し、ノードプロンプトで「require( 'fs')」と入力すると、NodeがパッケージA-OKを見つけているというメッセージが表示されます。

おそらく、それはGulpの問題です。たぶんそれはUbuntuの問題です。多分、それはジェフの馬鹿問題です。どんな理由であれ、私はGulpとUbuntuだけからfsを見つけるために私たちのビルドを手に入れることはできません。

すべてのヘルプは非常に、非常に感謝して受け取った...

おかげで、 ジェフ

+0

これは何らかのパスの問題ですか?言い換えれば、fs.jsは、私たちのWindowsインストールが知っている魔法のNodeJSディレクトリにありますが、私たちのUbuntuインストールはありませんか? –

答えて

0

[OK]を、私はいくつかの関連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

forkしないでくださいが、それはこれを見つけることが普通です。

NodeJSを使用してビルドを行うプロジェクトを継承しました。 何ヶ月もわたってすべてがうまくいきました。プロダクションリリースの数字は ですが、問題はありません。

継承これらの日:)

私が間違っているのであれば、それはjavascriptのクライアント側のプロジェクトですが、私を修正(ノードを使用して)一息でビルド。 あなたはxslxを追加しました。あなたのテストはWindowsではうまく動作しますが、ubuntuではうまく動作しません。

私の最初の容疑者はファントムズです。バージョンを確認してください。それは関連している可能性がありますhttps://github.com/SheetJS/js-xlsx/issues/184

+0

面白い考え! はい、Gulpを使用してクライアントサイドプロジェクトをビルドしていますが、その動作はあなたの言う通りです。私はそのリンクをチェックアウトします!ありがとうございました! –

+0

ああ、待ってください。私はちょうど思い出した:私はカルマでFirefoxを使用してテストを試み、同じ問題に遭遇した。私はブラウザエンジン系統を思い出さないので、同じ問題を抱えている可能性があります。 –

+0

https://github.com/jvilk/BrowserFSやjszip –

関連する問題