require('os') 中的平台问题 [英] Platform issue in require('os')

查看:33
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆