require('os') 中的平台问题

Platform issue in require('os')

我创建了一个 Ionic 3(A5) 应用程序。我是 运行 Mac 上的 node-webkit (NW.JS) 应用程序。如果我在 index.html 脚本标签内写入并检查,require('os') 平台 returns 'darwin' 和 require('fs') returns 已满正确设置对象。但是,如果我在 .ts 文件中编写相同的脚本 - require('os') platform returns 'browser' 和 require('fs') returns 空对象。

我在 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);

根据 The Jared Wilcurt @TheJaredWilcurt 在 gitter.im

上的回复

Node 和 Chromium 不知道 TS 文件是什么。你需要使用一些东西来 运行 将它编译成实际上可以是 运行 的代码。 TS是一个meta-language,像Markdown,Sass,HAML,CoffeeScript,JSX等等,Node只懂JavaScript,Chromium只懂HTML,CSS,和JS。 如果您正在使用某些东西来 t运行spile 它并且它改变了您的 require 语句,那么这就是问题所在。您应该检查您告诉环境的实际代码 运行.

这是因为 Ionic t运行spiler 正在以某种方式更改代码。我更改了代码

来自

var os = require('os');
var fs = require('fs');

var os = nw.require('os');
var fs = nw.require('fs');

现在唯一的问题是 TypeScript 编译器无法识别“nw”,因为它应该在 运行 时间出现。我已添加

declare var nw: any;

在上面。 现在好了。