Skip to content
This repository was archived by the owner on May 11, 2021. It is now read-only.
This repository was archived by the owner on May 11, 2021. It is now read-only.

Webpack build error: Unexpected token: name (RxCookieJar) #12

@emcniece

Description

@emcniece

I'm experiencing an error during build after migrating from the deprecated rx-http-request package. I'm not using Browserify - Webpack is dumping warnings and errors similar to #11. I am pretty sure that the problem is in my Webpack config... somewhere. Any chance you could take a peek and see if anything stands out?

Build error:

✗ npm run build

> main-js@0.11.2 build /Users/emcniece/Code/nodejs/mainjs
> rm -rf dist && ./node_modules/webpack/bin/webpack.js --config config/webpack.build.js --progress --profile --bail

2429ms building modules
17ms sealing
3ms optimizing
0ms basic module optimization
2ms module optimization
0ms advanced module optimization
0ms basic chunk optimization
0ms chunk optimization
1ms advanced chunk optimization
2ms module and chunk tree optimization
0ms chunk modules optimization
1ms advanced chunk modules optimization
6ms module reviving
2ms module order optimization
5ms module id optimization
0ms chunk reviving
0ms chunk order optimization
14ms chunk id optimization
13ms hashing
1ms module assets processing
30ms chunk assets processing
1ms additional chunk assets processing
0ms recording
469ms additional asset processing
701ms chunk asset optimization
0ms asset optimization
38ms emitting
Hash: f92200e5c576702109c8
Version: webpack 3.4.1
Time: 3774ms
        Asset     Size  Chunks                    Chunk Names
    main.js  2.28 MB       0  [emitted]  [big]  main
main.js.map  2.84 MB       0  [emitted]         main
  [71] ./src/error/index.js 4.18 kB {0} [built]
       [] -> factory:165ms building:42ms = 207ms
  [81] ./node_modules/@akanass/rx-http-request/lib 160 bytes {0} [built]
       [] -> factory:1ms building:0ms = 1ms
 [131] ./src/connection.js 3.36 kB {0} [built]
       [] -> factory:3ms building:96ms = 99ms
 [168] ./node_modules/ajv/lib 160 bytes {0} [optional] [built]
       [] -> factory:6ms building:0ms = 6ms
 [179] ./src/message-translator.js 8.52 kB {0} [built]
       [] -> factory:4ms building:379ms dependencies:83ms = 466ms
 [190] ./src/index.js 632 bytes {0} [built]
        factory:28ms building:468ms = 496ms
 [191] ./src/device.js 17.5 kB {0} [built]
       [] -> factory:2ms building:298ms dependencies:1ms = 301ms
 [473] ./src/proto-resource.js 3.23 kB {0} [built]
       [] -> factory:87ms building:38ms dependencies:41ms = 166ms
 [474] ./node_modules/@akanass/rx-http-request 160 bytes {0} [built]
       [] -> factory:2ms building:0ms = 2ms
 [553] ./node_modules/ajv/lib/compile 160 bytes {0} [optional] [built]
       [] -> factory:1ms building:0ms = 1ms
 [593] ./src/error/command.errors.js 441 bytes {0} [built]
       [] -> factory:62ms building:88ms = 150ms
 [594] ./src/error/notification.errors.js 272 bytes {0} [built]
       [] -> factory:63ms building:79ms = 142ms
 [595] ./src/report-resource.js 2.74 kB {0} [built]
       [] -> factory:87ms building:67ms dependencies:128ms = 282ms
 [614] ./src/constants.js 191 bytes {0} [built]
       [] -> factory:88ms building:76ms = 164ms
    + 601 hidden modules

WARNING in ./node_modules/@akanass/rx-http-request/index.js
3:24-31 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted

WARNING in ./node_modules/@akanass/rx-http-request/lib/index.js
3:24-31 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted

WARNING in ./node_modules/@akanass/rx-http-request/lib/RxHttpRequest.js
3:24-31 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted

WARNING in ./node_modules/@akanass/rx-http-request/lib/RxCookieJar.js
3:24-31 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted

WARNING in ./node_modules/ajv/lib/async.js
96:20-33 Critical dependency: the request of a dependency is an expression

WARNING in ./node_modules/ajv/lib/async.js
119:15-28 Critical dependency: the request of a dependency is an expression

WARNING in ./node_modules/ajv/lib/compile/index.js
13:21-34 Critical dependency: the request of a dependency is an expression

ERROR in main.js from UglifyJs
Unexpected token: name (RxCookieJar) [main.js:27499,10]

package.json: (stripped down)

{
  "main": "dist/main.js",
  "scripts": {
    "test": "./node_modules/karma/bin/karma start",
    "test-watch": "./node_modules/karma/bin/karma start --auto-watch --no-single-run",
    "docs": "rm -rf docs && ./node_modules/jsdoc/jsdoc.js src -r -c ./config/jsdoc.conf.json -d docs",
    "build": "rm -rf dist && ./node_modules/webpack/bin/webpack.js --config config/webpack.build.js --progress --profile --bail",
    "lint": "./node_modules/eslint/bin/eslint.js 'src/**/*.js'"
  },
  "devDependencies": {
    "babel": "6.23.0",
    "babel-cli": "6.24.1",
    "babel-loader": "7.1.1",
    "babel-preset-es2015": "6.24.1",
    "eslint": "4.1.1",
    "eslint-loader": "1.8.0",
    "husky": "0.14.1",
    "jasmine": "^2.7.0",
    "jasmine-core": "^2.7.0",
    "jasmine-webpack-plugin": "0.1.1",
    "jsdoc": "3.4.3",
    "json-loader": "^0.5.7",
    "karma": "1.7.0",
    "karma-chrome-launcher": "2.2.0",
    "karma-jasmine": "^1.1.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^2.0.2",
    "phantomjs-polyfill-object-assign": "0.0.2",
    "phantomjs-prebuilt": "^2.1.14",
    "rewire": "^2.5.2",
    "uglify-loader": "2.0.0",
    "validate-commit-msg": "2.12.2",
    "webpack": "^3.4.1",
    "webpack-dev-server": "^2.6.1",
    "webpack-merge": "4.1.0",
    "webpack-node-externals": "1.6.0"
  },
  "dependencies": {
    "@akanass/rx-http-request": "^2.5.0",
    "camel-case": "^3.0.0",
    "google-protobuf": "3.3.0",
    "protobufjs": "6.8.0",
    "rxjs": "^5.4.3"
  }
}

webpack.build.js:

'use strict';

const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.common.js');
const path = require('path');
const nodeExternals = require('webpack-node-externals');

module.exports = webpackMerge(commonConfig, {
    devtool: 'source-map',
    target: 'node',
    module: {
        rules: [{
            enforce: 'pre',
            test: /\.js$/,
            loader: "eslint-loader",
            exclude: /node_modules/
        }]
    },
    output: {
        path: path.resolve(__dirname, '../dist'),
        filename: 'main.js',
        library: 'mainjs',
        libraryTarget: 'umd'
    },
    plugins: [
        new webpack.optimize.UglifyJsPlugin()
    ]
});

webpack.common.js:

'use strict';

const webpack = require('webpack');
const path = require('path');

module.exports = {
    entry: path.resolve(__dirname, '../src/index.js'),
    module: {
        rules: [{
            test: /\.js$/,
            exclude: /(node_modules)/,
            loader: 'babel-loader',
            query: {
                presets: ['es2015']
            }
        }]
    }
};

Offending file: proto-resource.js

import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { RxHR } from '@akanass/rx-http-request';

import { PROTO_FETCH, PROTO_DECODE } from './error';

export class ProtoResource{
    constructor(baseUrl){
        this.connectionState = new BehaviorSubject(false);
        this.output = new Observable
            .forkJoin(
                RxHR.get(`${baseUrl}/proto.json`),
                RxHR.get(`${baseUrl}/command.json`),
                RxHR.get(`${baseUrl}/notification.json`)
            )
            .map((responses)=>{
                let output = [];

                responses.forEach((res)=>{
                    if(res.response.statusCode !== 200){
                        throw {
                            code: PROTO_FETCH
                        }
                    } else {

                        try{
                            output.push(JSON.parse(res.body));
                        } catch(err){
                            throw {
                                code: PROTO_DECODE
                            }
                        }
                    }
                });

                return output;
            });
    }
}

My current theory is that rx-http-request is being built or included in the wrong build order, possibly too late for Babel to convert it to es5. Any ideas?

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions