为什么 gulp-uglify breaks backendless?

Why gulp-uglify breaks backendless?

我真的不知道,我应该给你看哪部分代码。

我有一个webApp(reactJs、flux、react-router、nodejs+express server); 它工作正常,直到我 uglify main.js 文件。

这里"search"通过后端数据库(http://backendless.com/documentation/data/js/data_search_and_query.htm)

 var dataQuery = {
        condition: conditions,
        options: {
          pageSize: 18,
          relationsDepth: 1
        }
      }

如果我不在我的构建中使用 gulp uglify,它工作正常。 如果我确实使用 uglify,我会收到此错误: GET https://api.backendless.com/v1/data/t?pageSize=18&relationsDepth=1 404(未找到)

为什么会这样?

完整版:

GET https://api.backendless.com/v1/data/t?pageSize=18&relationsDepth=1 404 (Not Found)
e._ajax_for_browser.o @ main.js:15
e._ajax_for_browser.a.ignoreCache @ main.js:15
e._ajax_for_browser @ main.js:15
C.find @ main.js:15
r @ main.js:15
(anonymous function) @ main.js:15
r.$Dispatcher_invokeCallback @ main.js:1
r.dispatch @ main.js:1
a.handleViewAction @ main.js:15
o.search @ main.js:12
r.createClass._getInitItems @ main.js:13
r.createClass._getAllEstateItems @ main.js:13
l.addons.update.$merge.searchByParams @ main.js:15
r.createClass.componentDidMount @ main.js:13
o.notifyAll @ main.js:3
m.close @ main.js:9
a.closeAll @ main.js:12
a.perform @ main.js:12
h @ main.js:9
a.perform @ main.js:12
d.batchedUpdates @ main.js:8
o @ main.js:11
$._renderNewRootComponent @ main.js:9
r.measure.i @ main.js:9
$.render @ main.js:9
r.measure.i @ main.js:9
(anonymous function) @ main.js:15
u.createClass.statics.run.L @ main.js:2
(anonymous function) @ main.js:2
(anonymous function) @ main.js:2
(anonymous function) @ main.js:2
r.to @ main.js:2
(anonymous function) @ main.js:2
r.from @ main.js:2
u.createClass.statics.dispatch @ main.js:2
u.createClass.statics.refresh @ main.js:2
u.createClass.statics.run @ main.js:2
r @ main.js:3
250.../jsLibs/1. backendless.min @ main.js:15
a @ main.js:1
e @ main.js:1
(anonymous function) @ main.js:1

UPD#1 Gulpfile.js:

var gulp = require('gulp');
var browserify = require('gulp-browserify');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var uglifycss = require('gulp-uglifycss');




gulp.task('browserify', function() {
    gulp.src('src/js/main.js')
      .pipe(browserify({transform: 'reactify'}))
      .pipe(concat('main.js'))
      .pipe(gulp.dest('dist/js'));
});

gulp.task('uglifyjs', function() {
  gulp.src('dist/js/main.js')
      .pipe(uglify())
      .pipe(gulp.dest('dist/js')) 
});
gulp.task('copy', function() {
    gulp.src('src/index.html')
      .pipe(gulp.dest('dist'));
    gulp.src('src/assets/**/*.*')
      .pipe(gulp.dest('dist/assets'));
});

gulp.task('default',['browserify', 'copy']);

gulp.task('watch', function() {
    gulp.watch('src/**/*.*', ['default']);
});

gulp.task('js', function () {
  gulp.src('src/jsLibs/*.js')
    .pipe(concat('scripts.js'))
    .pipe(uglify())
    .pipe(gulp.dest('dist/js'))
})

gulp.task('css', function () {
  gulp.src('src/css/*.css')
    .pipe(concat('styles.css'))
    .pipe(uglifycss())
    .pipe(gulp.dest('dist/css'))
})

你能给我 .js 文件中的代码吗,你从哪里进行查询以查找数据对象。我认为您确实在另一个 class 中进行搜索。

GET https://api.backendless.com/v1/data/t?pageSize=18&relationsDepth=1 404 (Not Found)

此请求发送至名为 t 的 table。我很确定你的 table 名字不是 t.

正如我们在 support forum 上的回答:

Our JS SDK forms the url from the name of your constructor-function, thus if you rename it - the request will query another table, and for now there is no way to change this logic from your code.

So you're looking in the right direction: the most suitable solution in this case will be to exclude these constructor-functions names from uglify's obfuscation list.

此致, 马克