2016-11-07 97 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 –

相关问题