2017-06-15 15 views
5

Piszę swój projekt w ES6, a obecnie mam problem z modułem i18next. https://www.i18next.com/Błąd skryptu Google Apps z modułem i18next

W moim lokalnym systemie, kiedy importuję i18next import i18next from 'i18next'; i używam go w moich plikach źródłowych, wszystko działa. Jednak po uruchomieniu npm run gulp (łączy wszystkie pliki źródłowe w jeden plik javascript - main.js) i próby przesłania tego kodu do skryptu Google Apps (przy użyciu gapps upload), nie powiedzie się z błędem Bad Request. Upload failed..

Po sprawdzeniu w Internecie dowiedziałem się, że ten błąd oznacza, że ​​coś jest nie tak ze składnią, więc starałem się skopiować wkleić kod z main.js do Google Apps Script i pokazuje następujący błąd składni:

Invalid property ID. (Line 32, file "main")

Linia 32:

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

Ten błąd występuje, nawet jeśli tylko importować moduł i18next bez faktycznie robi nic z nim.

Oto mój 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']); 
}); 

również próbował użyć modułu i18n, robi praca.

Chcę używać modułu tekstowego get dla moich tłumaczeń, nie potrzebuję dostosowań formatu waluty/daty. Po prostu pobieranie tekstu z plików tłumaczeń. Nie można używać PO json lub innego rozszerzenia (będę musiał przesłać wszystkim jako jeden plik na gaz, nie sądzę że pozwalają one inne niż js pliki)

moich plików szablonów są tacy en.js:

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

Odpowiedz

5

właśnie znalazłem rozwiązanie robocze!

po wypróbowaniu wszystkich bibliotek internacjonalizacji i uzyskaniu różnych błędów związanych z gazem i bibelotami, node-polyglot moduł pracował dla mnie!

Nadal nie wiem, dlaczego pracuje i18next isnt chociaż

+1

Naprawdę dziwne ... byłoby interesujące poznać przyczynę trasy tego problemu. – jamuhl

+0

Tak! Stworzyłem problem na repozytorium i18next, ale powiedziano mi, że powinienem skontaktować się ze skryptem aplikacji Google, ponieważ problem prawdopodobnie ma coś wspólnego z ich stroną. Utworzono błąd na stronie wsparcia skryptów aplikacji, ale nie otrzymałem jeszcze odpowiedzi. – JapanGuy

+0

@jamuhl Och, właśnie zdałem sobie sprawę, że to ty rozmawiałeś z Githubem. Dzięki za pomoc przy okazji! Mam i18następne prace nad moim innym projektem opartym na przeglądarce! Wspaniale! – JapanGuy

1

wsparcie dla Google Apps Script ES6 jest ograniczona. Jak rozumiem, GAS nie zawiera żadnych funkcji wprowadzonych na ES5 i ES6.

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

Basic JavaScript features

Apps Script is based on JavaScript 1.6, plus a few features from 1.7 and 1.8. Many basic JavaScript features are thus available in addition to the built-in and advanced Google services: you can use common objects like Array, Date, RegExp, and so forth, as well as the Math and Object global objects. However, because Apps Script code runs on Google's servers (not client-side, except for HTML-service pages), browser-based features like DOM manipulation or the Window API are not available.

Według Mozilla Developer Network, JavaScript 1.6 odpowiada ECMAScript 3 (ES3).

+0

Nie wiedziałem tego, dziękuję!Ale myślę, że mój plik gulp przekształca mój kod źródłowy w javascript (nie mam pewności, która wersja). I użyłem kilku różnych modułów węzła i dostaję błędy składniowe (w skrypcie aplikacji) tylko z modułami internacjonalizacji. Wszystko inne działa zgodnie z oczekiwaniami – JapanGuy

Powiązane problemy