require('os') 中的平台问题 [英] Platform issue in require('os')
问题描述
我创建了一个 Ionic 3(A5) 应用程序.我在 Mac 上将其作为 node-webkit (NW.JS) 应用程序运行.如果我在 index.html 脚本标签中编写并检查,require('os')
平台返回 'darwin' 和 require('fs')
正确返回全套对象.但是,如果我在 .ts 文件中编写相同的脚本 - require('os')
平台返回 'browser' 和 require('fs')
返回空对象.
I have created an Ionic 3(A5) app. I am running this as node-webkit (NW.JS) app on Mac. If I write inside index.html script tag and check, require('os')
platform returns 'darwin' and require('fs')
returns full set of object correctly. But if I write same script inside a .ts file - require('os')
platform returns 'browser' and require('fs')
returns empty object.
我在 devDependencies 中使用 @types/node.
I am using @types/node in devDependencies.
index.html 中的代码 -
Code inside 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 中的代码 -
Code inside 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);
推荐答案
基于 Jared Wilcurt @TheJaredWilcurt 在 的回复gitter.im,
Based on a reply from The Jared Wilcurt @TheJaredWilcurt on gitter.im,
Node 和 Chromium 不知道 TS 文件是什么.您需要使用某些东西将其转换为可以实际运行的代码.TS 是一种元语言,如 Markdown、Sass、HAML、CoffeeScript、JSX 等.Node 只理解 JavaScript,Chromium 只理解 HTML、CSS 和 JS.如果您正在使用某些东西来转换它并且它改变了您的 require 语句,那么这就是问题所在.您应该检查您告诉环境运行的实际代码.
发生这种情况是因为 Ionic 转译器以某种方式更改了代码.我改了代码
This was happening because the Ionic transpiler was changing the code in some way. I changed the code
来自
var os = require('os');
var fs = require('fs');
到
var os = nw.require('os');
var fs = nw.require('fs');
现在唯一的问题是 TypeScript 编译器无法识别nw",因为它应该在运行时出现.我加了
Now the only problem was that TypeScript compiler was not recognizing 'nw' as it was supposed to come at runtime. I have added
declare var nw: any;
在顶部.现在一切都好.
on top. All fine now.
这篇关于require('os') 中的平台问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!