Skip to content

webpack & google-cloud #1821

Description

@brandonmp

Environment details

  • OS: ubuntu 16.10
  • Node.js version: 4.3.2
  • npm version: 2.14.12
  • google-cloud-node version: 0.44

Steps to reproduce

I'm using a webpack setup to build a nodejs project, the dependencies of which include google-cloud

Webpack sort of loses its mind w/ google-cloud, though, so hoping someone has some insight on how to fix.

The first error, ironically, appeared to be a deeply nested aws-sdk dependency, b/c I guess aws-sdk doesn't play nicely w/ webpack. I was able to fix that by including a pre-packaged AWS in my webpack-config.js, which is here:

// webpack.config.js
var fs = require('fs');
var path = require("path");
var webpack = require('webpack')
var prePackagedAwsPath = path.join('aws-sdk', 'dist', 'aws-sdk');

var nodeModules = {};
fs.readdirSync('node_modules')
    .filter(function (x) {
        return ['.bin'].indexOf(x) === -1;
    })
    .forEach(function (mod) {
        nodeModules[mod] = 'commonjs ' + mod;
    });

module.exports = {
    entry: path.join(__dirname, '/src/index.js'),
    output: {
        path: path.join(__dirname, "/dist/"),
        filename: "[name].js"
    },
    resolve: {
        alias: {
            'aws-sdk': prePackagedAwsPath
        }
    },
    target: "node",
    externals: nodeModules,
    module: {
        loaders: [
            {
                test: /\.node/,
                loader: 'node'
            },
            {
                test: require.resolve(prePackagedAwsPath),
                loader: 'imports?window=>null'
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel'
            },
            {
                test: /\.json$/,
                loader: 'json'
            }
        ]
    }
};

Now, however, the problem lies with the JSONStream dependency. The file apparently includes a # character at the top of its index.js, and that's breaking the build process.

Here's the error:

ERROR in ./~/@wayhome/wayhome-utils/~/google-cloud/~/JSONStream/index.js
Module parse failed: /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/JSONStream/index.js Unexpected character '#' (1:0
)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected character '#' (1:0)
    at Parser.pp$4.raise (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:2221:15)
    at Parser.pp$7.getTokenFromCode (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:2756:10)
    at Parser.pp$7.readToken (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:2477:17)
    at Parser.pp$7.nextToken (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:2468:15)
    at Parser.parse (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:515:10)
    at Object.parse (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:3098:39)
    at Parser.parse (/home/bmp/code/scraping/node_modules/webpack/lib/Parser.js:902:15)
    at DependenciesBlock.<anonymous> (/home/bmp/code/scraping/node_modules/webpack/lib/NormalModule.js:104:16)
    at DependenciesBlock.onModuleBuild (/home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:310:10)
    at nextLoader (/home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:275:25)
    at /home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/home/bmp/code/scraping/node_modules/webpack/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /home/bmp/code/scraping/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/@google-cloud/prediction/src/model.js 25:17-38

I'd normally call this a JSONStream issue and file it there, but google-cloud is throwing warnings everywhere (below) as well, so I assume there's some overarching issue w/ webpack.

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/hash-stream-validation/index.js
Module not found: Error: Cannot resolve module 'fast-crc32c' in /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/hash-s
tream-validation
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/hash-stream-validation/index.js 5:8-30

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/src/node/src/grpc_extension.js
Critical dependencies:
38:14-35 the request of a dependency is an expression
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/src/node/src/grpc_extension.js 38:14-35

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/bytebuffer/dist/bytebuffer-node.js
Module not found: Error: Cannot resolve module 'memcpy' in /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/bytebuffer/
dist
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/bytebuffer/dist/bytebuffer-node.js 29:38-55

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/pre-binding.js
Critical dependencies:
19:22-48 the request of a dependency is an expression
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/pre-binding.js 19:22-48
WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/versioning.js
Critical dependencies:
15:20-67 the request of a dependency is an expression
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/versioning.js 15:20-67

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/nw-pre-gyp/index.html
Module parse failed: /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/grpc/node_modules/node-pre-gyp/lib/util/nw-pre-gy
p/index.html Unexpected token (1:0)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (1:0)
    at Parser.pp$4.raise (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:2221:15)
    at Parser.pp.unexpected (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:603:10)
    at Parser.pp$3.parseExprAtom (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1822:12)
    at Parser.pp$3.parseExprSubscripts (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1715:21)
    at Parser.pp$3.parseMaybeUnary (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1692:19)
    at Parser.pp$3.parseExprOps (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1637:21)
    at Parser.pp$3.parseMaybeConditional (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1620:21)
    at Parser.pp$3.parseMaybeAssign (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1597:21)
    at Parser.pp$3.parseExpression (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:1573:21)
    at Parser.pp$1.parseStatement (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:727:47)
    at Parser.pp$1.parseTopLevel (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:638:25)
    at Parser.parse (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:516:17)
    at Object.parse (/home/bmp/code/scraping/node_modules/webpack/node_modules/acorn/dist/acorn.js:3098:39)
    at Parser.parse (/home/bmp/code/scraping/node_modules/webpack/lib/Parser.js:902:15)
    at DependenciesBlock.<anonymous> (/home/bmp/code/scraping/node_modules/webpack/lib/NormalModule.js:104:16)
    at DependenciesBlock.onModuleBuild (/home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:310:10)
    at nextLoader (/home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:275:25)
    at /home/bmp/code/scraping/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/home/bmp/code/scraping/node_modules/webpack/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /home/bmp/code/scraping/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib ^\.\/.*$

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/compile.js
Module not found: Error: Cannot resolve module 'node-gyp' in /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/grpc/node
_modules/node-pre-gyp/lib/util
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/compile.js 29:28-55

WARNING in ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/compile.js
Module not found: Error: Cannot resolve module 'npm' in /home/bmp/code/scraping/node_modules/@wayhome/wayhome-utils/node_modules/google-cloud/node_modules/grpc/node_modu
les/node-pre-gyp/lib/util
 @ ./~/@wayhome/wayhome-utils/~/google-cloud/~/grpc/~/node-pre-gyp/lib/util/compile.js 39:27-49

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions