我正在尝试为Electron创建一个extern,供Google Closure编译器使用。这是我的externs的样子:
var electron = {};
electron.dialog = function() {};
electron.app = function() {};
electron.ipcRenderer = function() {};
electron.on = function() {};
electron.send = function() {};
electron.remote = function(){}; // {return{getGlobal: function(){}}};
electron.remote.getGlobal = function(a){};
electron.require = function() {};
electron.buildFromTemplate = function() {};
electron.popup = function() {};
electron.getCurrentWindow = function() {};
electron.showErrorBox = function() {};
electron.setTitle = function() {};
electron.setRepresentedFilename = function() {};
electron.showMessageBox = function() {};
electron.getPath = function() {};
electron.showSaveDialog = function() {};
electron.showOpenDialog = function() {};
var process = {
platform: {}
};我遇到的问题是编译器没有保留getGlobal函数的函数名。我的原始源代码是这样的:
const electron = require('electron');
electron.remote.getGlobal('sharedObject')在运行编译器之后,它最终看起来像这样:
var a = require("electron");
console.log(a.remote.D("sharedObject"));a.remote.D真的应该是a.remote.getGlobal
如何让编译器保留getGlobal函数名?
发布于 2017-05-31 15:26:23
我更改了我的原始源代码,现在看起来像这样:
电子。远程“‘getGlobal”
编译器将保留该名称。这是因为编译器始终保持字符串的完整性。编译代码现在看起来如下所示:
console.log(a.remote.getGlobal("sharedObject"));但是,编译器为什么不能识别外部文件中的getGlobal函数仍然是一个谜。也许它只能处理嵌套在根对象上的一个级别的函数(而这里是两个级别)。另一个原因可能与编译器如何执行其多阶段编译有关,这在处理嵌套函数时存在一定的缺陷。
https://stackoverflow.com/questions/44277561
复制相似问题