【问题标题】:Google Apps Script error with i18next modulei18next 模块的 Google Apps 脚本错误
【发布时间】:2017-11-17 10:44:51
【问题描述】:

我正在用 ES6 编写我的项目,目前面临 i18next 模块的问题。 https://www.i18next.com/

在我的本地系统上,当我导入 i18next import i18next from 'i18next'; 并在我的源文件中使用它时,一切正常。但是,在我运行 npm run gulp(它将所有源文件合并到一个 javascript 文件 - main.js)并尝试将该代码上传到 Google Apps 脚本(使用 gapps upload)之后,它失败并出现 Bad Request. Upload failed. 错误。

网上查了发现这个错误说明语法有问题,所以我尝试将main.js中的代码复制粘贴到google apps脚本中,显示如下语法错误:

属性 ID 无效。 (第 32 行,文件“main”)

第 32 行:

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

即使我只导入 i18next 模块而不实际对其进行任何操作,也会发生此错误。

这是我的gulpfile

import gulp from 'gulp';
import browserify from 'browserify';
import source from 'vinyl-source-stream';
import mocha from 'gulp-mocha';

const compileFile = 'main.js';

gulp.task('dest', () => {
    browserify({
        entries: ['src/'+compileFile]
    })
    .transform('babelify')
    .plugin('gasify')
    .bundle()
    .pipe(source(compileFile))
    .pipe(gulp.dest('dist'));
});

gulp.task('test', () => {
    gulp.src('test/**/*.js', {read: false})
    .pipe(mocha({
        reporter: 'spec',
        compilers: 'js:babel-core/register'
    }));
});

gulp.task('default', ['test', 'dest'], () => {});

gulp.task('watch', () => {
    gulp.watch('src/**/*.js', ['dest']);
});

也试过用i18n模块,不行。

我想使用获取文本模块进行翻译,不需要自定义货币/日期格式。只是翻译文件中的文本获取器。不能使用 json po 或任何其他扩展名(我需要将所有文件作为一个文件上传到 GAS,不要认为他们允许 .js 以外的任何文件)

我的模板文件是这样的en.js:

const res = {
  template: {
    "signIn":"Hello, <@#1>! Signed you in (#2)",
    ...
  },
  command: {
    "signIn": "hi",
    ...
  }
};
export default res;

【问题讨论】:

    标签: javascript google-apps-script ecmascript-6 i18next


    【解决方案1】:

    刚刚找到了可行的解决方案!

    在尝试了所有国际化库并遇到各种与气体和非气体相关的错误后,node-polyglot 模块对我有用!

    仍然不知道 i18next 无法正常工作的原因

    【讨论】:

    • 真的很奇怪...知道这个问题的原因会很有趣。
    • 是的!我在 i18next repo 上创建了一个问题,但被告知我应该联系谷歌应用程序脚本,因为这个问题可能与他们有关。在应用程序脚本支持页面上创建了一个问题,但尚未得到响应
    • @jamuhl 哦,我刚刚意识到我在 github 上与您交谈。顺便感谢您的帮助!我让 i18next 在我的其他基于浏览器的项目上工作!太棒了!
    • 不客气——真的很好奇——很想解决这个问题。希望我们得到应用脚本支持的回复 - 如果您能在收到回复时更新我,那就太好了。
    【解决方案2】:

    对 ES6 的 Google Apps 脚本支持有限。据我了解,GAS 不包含 ES5 和 ES6 中引入的任何功能。

    来自https://developers.google.com/apps-script/guides/services/#basic_javascript_features

    基本的 JavaScript 功能

    Apps 脚本基于 JavaScript 1.6,加上 1.7 和 1.8 的一些功能。因此,除了内置和高级 Google 服务之外,还可以使用许多基本的 JavaScript 功能:您可以使用常见的对象,如 Array、Date、RegExp 等,以及 Math 和 Object 全局对象。但是,由于 Apps 脚本代码在 Google 的服务器上运行(不是客户端,HTML 服务页面除外),因此 DOM 操作或 Window API 等基于浏览器的功能不可用。

    根据Mozilla Developer Network,JavaScript 1.6 对应 ECMAScript 3 (ES3)。

    【讨论】:

    • 我不知道这个,谢谢!但我认为我的 gulpfile 将我的源代码转换为 javascript(不确定哪个版本)。而且我使用了一些不同的节点模块,并且仅在国际化模块中出现语法错误(在应用程序脚本上)。其他一切都按预期工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多