【发布时间】:2015-09-28 09:52:22
【问题描述】:
我正在尝试在 Google 电子表格(在 script.google.com 部分)中使用 ES6。我对 JavaScript 很陌生,也许这个错误是微不足道的......
- 28/09:由于我只是使用 Google Apps 脚本库名称(记录器)而更改了帖子的错误,我切换到
SomeClass。我正在寻找模块,因为我的声明不是好的声明
我做了什么:
- 创建了一个 webpack 项目
- 创建了一个 Logger 类
- 在我导入 Logger 类的地方创建了一个 main.js
- WebPack 从我的 main.js 生成一个包
- 我将 bundle.js 复制/粘贴到 script.google 上的捆绑文件中
- 我尝试在 script.google 中运行测试,但得到
ReferenceError:SomeClass 未定义。`
这是我的代码:
SomeClass.js
export default class SomeClass {
constructor() {
this.loggerSheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("ImportLog");
}
LogInfo(data) {
Logger.log(data);
loggerSheet.appendRow([new Date(), "INFO", data]);
}
}
Main.js
import SomeClass from './SomeClass.js';
在 script.google 中测试
function test_bundle() {
var someClass = new SomeClass(); //<== breaks here
}
Bundle.js => 复制/粘贴到 script.google
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _SomeClassJs = __webpack_require__(4);
var _SomeClassJs2 = _interopRequireDefault(_SomeClassJs);
/***/ },
/* 1 */,
/* 2 */,
/* 3 */,
/* 4 */
/***/ function(module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var SomeClass = (function () {
function SomeClass(option) {
_classCallCheck(this, SomeClass);
this.loggerSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ImportLog");
}
_createClass(SomeClass, [{
key: "logInfo",
value: function logInfo(data) {
loggerSheet.appendRow([new Date(), "INFO", data]);
}
}]);
return SomeClass;
})();
exports["default"] = SomeClass;
module.exports = exports["default"];
/***/ }
/******/ ]);
【问题讨论】:
-
我不知道转译到底是什么以及您的最终目标是什么,但 Logger 是一个保留的 Google Apps Script 类,您不能(或不应该)更改它。另外,请记住,GAS 不是您日常使用的异步/客户端 Javascript,Google 的编译器有一些您可能需要解决的更改,例如。你不能同时使用 2 个函数,没有 setTimeout 也没有 webWorkers。
-
感谢您的信息。此处转译是为了从 ES6 代码编写 ES5 代码。
-
你删除了我一个错误@Kriggs,因为 Google Apps 脚本中确实存在 Logger,我认为我的包导入很好。这不是因为更改名称会导致错误 bcaoming
ReferenceError: "SomeClass" is not defined。所以我现在可能只需要学习如何创建一个模块。谢谢 -
这个问题的回复可以在this post找到。
标签: javascript google-apps-script google-sheets ecmascript-6 webpack