aws / aws-iot-device-sdk-js

SDK for connecting to AWS IoT from a device using JavaScript/Node.js
Apache License 2.0
964 stars 384 forks source link

SyntaxError: Unexpected token in <MY_PROJECT>/node_modules/aws-iot-device-sdk/thing/index.js #175

Closed 0xc0d3r closed 6 years ago

0xc0d3r commented 6 years ago
  app:build:webpack-compiler You may need an appropriate loader to handle this file type.
  app:build:webpack-compiler SyntaxError: Unexpected token (499:11)
  app:build:webpack-compiler     at Parser.pp$4.raise (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:2221:15)
  app:build:webpack-compiler     at Parser.pp.unexpected (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:603:10)
  app:build:webpack-compiler     at Parser.pp.expect (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:597:28)
  app:build:webpack-compiler     at Parser.pp$3.parseExprList (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:2152:16)
  app:build:webpack-compiler     at Parser.pp$3.parseSubscripts (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1741:35)
  app:build:webpack-compiler     at Parser.pp$3.parseExprSubscripts (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1718:17)
  app:build:webpack-compiler     at Parser.pp$3.parseMaybeUnary (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1692:19)
  app:build:webpack-compiler     at Parser.pp$3.parseExprOps (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1637:21)
  app:build:webpack-compiler     at Parser.pp$3.parseMaybeConditional (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1620:21)
  app:build:webpack-compiler     at Parser.pp$3.parseMaybeAssign (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1597:21)
  app:build:webpack-compiler     at Parser.pp$3.parseExpression (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:1573:21)
  app:build:webpack-compiler     at Parser.pp$1.parseStatement (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:727:47)
  app:build:webpack-compiler     at Parser.pp$1.parseBlock (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:981:25)
  app:build:webpack-compiler     at Parser.pp$1.parseStatement (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:709:33)
  app:build:webpack-compiler     at Parser.pp$1.parseIfStatement (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:824:28)
  app:build:webpack-compiler     at Parser.pp$1.parseStatement (/Users/Anesh/react/aws-iot-example/node_modules/webpack/node_modules/acorn/dist/acorn.js:698:30)

webpack.config.js

const webpack = require('webpack')
const cssnano = require('cssnano')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const CircularDependencyPlugin = require('circular-dependency-plugin')
const WebpackStrip = require('strip-loader')
const config = require('../config')
const debug = require('debug')('app:webpack:config')

const paths = config.utils_paths
const __DEV__ = config.globals.__DEV__
const __PROD__ = config.globals.__PROD__
const __TEST__ = config.globals.__TEST__

debug('Creating configuration.')
const webpackConfig = {
  name: 'client',
  target: 'web',
  devtool: config.compiler_devtool,
  resolve: {
    root: paths.client(),
    extensions: ['', '.js', '.jsx', '.json']
  },
  module: {
    noParse: [new RegExp('node_modules/localforage/dist/localforage.js')]
  }
}
// ------------------------------------
// Entry Points
// ------------------------------------
const APP_ENTRY = paths.client('main.js')

webpackConfig.entry = {
  app: __DEV__
    ? ['babel-polyfill', APP_ENTRY].concat(
        `webpack-hot-middleware/client?path=${
          config.compiler_public_path
        }__webpack_hmr`
      )
    : ['babel-polyfill', APP_ENTRY],
  vendor: config.compiler_vendors
}

// ------------------------------------
// Bundle Output
// ------------------------------------
webpackConfig.output = {
  filename: `[name].[${config.compiler_hash_type}].js`,
  path: paths.dist(),
  publicPath: config.compiler_public_path
}

// ------------------------------------
// Plugins
// ------------------------------------
webpackConfig.plugins = [
  new webpack.DefinePlugin(config.globals),
  new HtmlWebpackPlugin({
    template: paths.client('index.html'),
    hash: false,
    favicon: paths.client('static/favicon.ico'),
    filename: 'index.html',
    inject: 'body',
    minify: {
      collapseWhitespace: true
    }
  }),
  new CircularDependencyPlugin({
    // exclude detection of files based on a RegExp
    exclude: /a\.js|node_modules/,
    // add errors to webpack instead of warnings
    failOnError: true
  })
]

if (__DEV__) {
  debug('Enable plugins for live development (HMR, NoErrors).')
  webpackConfig.plugins.push(
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  )
} else if (__PROD__) {
  debug('Enable plugins for production (OccurenceOrder, Dedupe & UglifyJS).')
  webpackConfig.plugins.push(
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        unused: true,
        dead_code: true,
        warnings: false
      }
    })
  )
}

// Don't split bundles during testing, since we only want import one bundle
if (!__TEST__) {
  webpackConfig.plugins.push(
    new webpack.optimize.CommonsChunkPlugin({
      names: ['vendor']
    })
  )
}

// ------------------------------------
// Loaders
// ------------------------------------
// JavaScript / JSON
webpackConfig.module.loaders = [
  {
    test: /\.(js|jsx)$/,
    exclude: /node_modules/,
    loader: 'babel',
    query: config.compiler_babel
  },
  {
    test: /\.json$/,
    loader: 'json'
  }
]

// ------------------------------------
// Style Loaders
// ------------------------------------
// We use cssnano with the postcss loader, so we tell
// css-loader not to duplicate minimization.
const BASE_CSS_LOADER = 'css?sourceMap&-minimize'

webpackConfig.module.loaders.push({
  test: /\.scss$/,
  exclude: null,
  loaders: ['style', BASE_CSS_LOADER, 'postcss', 'sass?sourceMap']
})
webpackConfig.module.loaders.push({
  test: /\.css$/,
  exclude: null,
  loaders: ['style', BASE_CSS_LOADER, 'postcss']
})

webpackConfig.sassLoader = {
  includePaths: paths.client('styles')
}

webpackConfig.postcss = [
  cssnano({
    autoprefixer: {
      add: true,
      remove: true,
      browsers: ['last 2 versions']
    },
    discardComments: {
      removeAll: true
    },
    discardUnused: false,
    mergeIdents: false,
    reduceIdents: false,
    safe: true,
    sourcemap: true
  })
]
if (__DEV__) {
  /* eslint-enable */
  // webpackConfig.module.preLoaders = [
  //   {
  //     test: /\.(js|jsx)$/,
  //     include: paths.base('src/'),
  //     loader: 'eslint',
  //     exclude: /node_modules/
  //   }
  // ]
  webpackConfig.eslint = {
    configFile: paths.base('.eslintrc'),
    emitWarning: __DEV__,
    failOnWarning: false,
    failOnError: false,
    emitError: false
  }
}
// File loaders
webpackConfig.module.loaders.push(
  {
    test: /\.woff(\?.*)?$/,
    loader:
      'url?prefix=fonts/&name=[path][name].[ext]&limit=10000&mimetype=application/font-woff'
  },
  {
    test: /\.woff2(\?.*)?$/,
    loader:
      'url?prefix=fonts/&name=[path][name].[ext]&limit=10000&mimetype=application/font-woff2'
  },
  {
    test: /\.otf(\?.*)?$/,
    loader:
      'file?prefix=fonts/&name=[path][name].[ext]&limit=10000&mimetype=font/opentype'
  },
  {
    test: /\.ttf(\?.*)?$/,
    loader:
      'url?prefix=fonts/&name=[path][name].[ext]&limit=10000&mimetype=application/octet-stream'
  },
  {
    test: /\.eot(\?.*)?$/,
    loader: 'file?prefix=fonts/&name=[path][name].[ext]'
  },
  {
    test: /\.svg(\?.*)?$/,
    loader:
      'url?prefix=fonts/&name=[path][name].[ext]&limit=10000&mimetype=image/svg+xml'
  },
  { test: /\.(png|jpg|gif)$/, loader: 'url?limit=8192' }
)
if (__PROD__) {
  webpackConfig.module.loaders.push({
    test: /\.js$/,
    loader: WebpackStrip.loader('console.log')
  })
}
// ------------------------------------
// Finalize Configuration
// ------------------------------------
// when we don't know the public path (we know it only when HMR is enabled [in development]) we
// need to use the extractTextPlugin to fix this issue:
// http://stackoverflow.com/questions/34133808/webpack-ots-parsing-error-loading-fonts/34133809#34133809
if (!__DEV__) {
  debug('Apply ExtractTextPlugin to CSS loaders.')
  webpackConfig.module.loaders
    .filter(
      loader =>
        loader.loaders &&
        loader.loaders.find(name => /css/.test(name.split('?')[0]))
    )
    .forEach(loader => {
      const first = loader.loaders[0]
      const rest = loader.loaders.slice(1)
      loader.loader = ExtractTextPlugin.extract(first, rest.join('!'))
      delete loader.loaders
    })

  webpackConfig.plugins.push(
    new ExtractTextPlugin('[name].[contenthash].css', {
      allChunks: true
    })
  )
}

webpackConfig.node = {
  tls: 'empty',
  fs: 'empty'
}

module.exports = webpackConfig

Versions: node: v7.3.0 npm: 4.6.1

0xc0d3r commented 6 years ago

I figured out the issue. Check my solution at stackoverflow