我创建了一个Ionic 3(A5)应用程序。我在Mac上运行它作为node-webkit(NW.JS)应用程序。如果我在index.html脚本标记内写入并检查,require('os')
平台返回' darwin '并且require('fs')
正确返回完整的对象集。但是如果我在.ts文件中编写相同的脚本 - require('os')
平台返回' 浏览器'并且require('fs')
返回空对象。
我在devDependencies中使用@ types / node。
index.html中的代码 -
var os = require('os');
var fs = require('fs');
console.log('Log from index.html');
console.log('platform = ' + os.platform());
console.log('fs = ');
console.log(fs);
app.component.ts中的代码 -
var os = require('os');
var fs = require('fs');
console.log('Log from app.component.ts');
console.log('platform = ' + os.platform());
console.log('fs = ');
console.log(fs);
答案 0 :(得分:0)
根据Jared Wilcurt @TheJaredWilcurt在gitter.im的回复,
Node和Chromium不知道TS文件是什么。你需要使用一些东西将它转换为实际可以运行的代码。 TS是一种元语言,如Markdown,Sass,HAML,CoffeeScript,JSX等。节点只能理解JavaScript,Chromium只能理解HTML,CSS和JS。 如果您正在使用某些东西来转换它并且它会改变您的require语句,那么这就是问题所在。您应该检查告诉环境运行的实际代码。
这种情况正在发生,因为Ionic转换器正在以某种方式改变代码。我改变了代码
这
var os = require('os');
var fs = require('fs');
到
var os = nw.require('os');
var fs = nw.require('fs');
现在唯一的问题是TypeScript编译器无法识别' nw '因为它应该在运行时来。我添加了
declare var nw: any;
在上面。 一切都很好。