Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to write Chrome Apps using node.js modules?

I want to write a Chrome App, but I also want to inter-op with some .Net code using Edge.js. Now I've tried it out in a Nodejs app, but am unable to figure out how to do it in a Chrome App.

I've watched the YouTube video of Paul Kinlan (the Chrome Apps office hours - NodeJS in chrome packaged apps), but can't get the code to run. I've also tried browserify with no success.

Is there a working sample which uses any of the node modules in a Chrome App (because the available resources look to be older).

Thanks in advance, Manoj.

like image 507
mmwaikar Avatar asked Jul 30 '14 07:07

mmwaikar


People also ask

Does Chrome use node JS?

V8 is Google's open source high-performance JavaScript and WebAssembly engine, written in C++ . It is used in Chrome and in Node. js, among others.

Can I use node modules in Chrome extension?

It's not possible to require node modules directly within a chrome extension. However, it is possible to bundle node applications and packages into the browser for use with your extensions. See here for more: Is it possible to develop Google Chrome extensions using node.

Can I use node modules in browser?

Being able to call Node. js modules from JavaScript running in the browser has many advantages because it allows you to use Node. js modules for client-side JavaScript applications without having to use a server with Node.

Are Chrome extensions written in js?

On a basic level, an extension is just a collection of HTML, CSS and JavaScript snippets that lets us execute some extra functionalities through the JavaScript APIs that the Chrome browser exposes.


1 Answers

I've run code written for node.js inside a chrome packaged apps, and have used modules published to npm, using either browserify or webpack.

The only real tricky bit for me traditionally has been exporting functionality for use by my web app, since you don't have access to require(). I usually just create a special module that exports all global symbols I want to access and use that as my entry point.

E.g., using webpack, I'd create a file called globals.js:

module.exports = exports = {
  a: require('a'),
  b: require('b'),
  ...
}

Then create a webpack.config.js:

module.exports = {
  context: __dirname + "/js",
  entry: {
    globals: [
        "globals.js",
      ],
  },
  output: {
    // Make sure to use [name] or [id] in output.filename
    //  when using multiple entry points
    path: __dirname + "/js/generated",

    filename: "[name].bundle.js",
    chunkFilename: "[id].bundle.js",

    library: "[name]",
    libraryTarget: "umd",
  }
};

Then I can pack that and include the generated bundle in my application, and use the global variable globals now.

I am not sure Edge.js works, but I would not consider it likely that it will be possible to webpack/browserify that into a web/chrome app, because their is no support for native bindings, and inter-process communication is a lot different. I'm just not sure how it could work.

(But you can probably implement your own interop with .net applications using a different kind of IPC, perhaps)

like image 152
mmocny Avatar answered Oct 27 '22 16:10

mmocny