
Research
/Security News
9 Malicious NuGet Packages Deliver Time-Delayed Destructive Payloads
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.
browser-require
Advanced tools
browser-require
Npm makes it easy to share code on your server. But how many times have you
wanted to share Javascript code easily between the server and the browser?
browser-require allows you to easily use CommonJS and NPM modules defined
on the server in your browser.
browser-require enables you to require both relative (local to your project) CommonJS modules as well as global NPM modules.
To install: $ npm install browser-require
Currently, browser-require depends on the connect middleware framework.
First, add in the browser-require middleware into your connect server:
var connect = require('connect')
, app = connect.createServer()
, exposeRequire = require('browser-require');
// What to add
app.use(exposeRequire({
base: __dirname // This is where we look to find your non-global modules
});
// Make sure brequire middleware comes before staticProvider middleware
app.use(connect.staticProvider(__dirname));
app.listen(3000);
On the browser, this is what your index.html might look like: browser-require example
<!-- This is where your custom JavaScript code resides. See README section below -->
<script type="text/javascript" src="/js/app.js"></script>
</body>
</html>
Then in /js/app.js, you can require CommonJS and NPM modules as if you are on the server:
var _ = require('underscore'); // browser-side requires FTW!!!!
// This should alert "10"
alert(_.reduce([1, 2, 3, 4], function (sum, num) {
sum += num;
return sum;
}));
Currently, all requires from the browser load JavaScript source and dependencies from the server in a dynamic, piece-wise, and on-demand fashion.
When you request a javascript file:
The above methodology is great for development environments, where you do not constantly want to re-compile a javascript file and its dependencies into a single static JavaScript file.
That said, I will be adding static compilation shortly for use in production environments.
Moreover, there are plans to be able to use a hybrid approach for doing both static compilation and dynamic loading in the same environment, selectively depending on what you want to pre-compile and what you want to load dynamically.
There are examples in the ./examples directory.
To run the relative modules example: $ cd examples/relative $ node server.js
To run the npm modules example: $ npm install underscore $ npm install data-structures-js $ npm install validator $ cd examples/npm $ node server.js
First, make sure the following npm modules are installed, since we will be using them to test browser-require: $ npm install underscore $ npm install data-structures-js $npm install validator
First, start up the test server: $ make start-test-server
To run tests in Chrome: $ make test-chrome
To run tests in Firefox: $ make test-firefox
Finally, stop the test server: $ make stop-test-server
MIT License
Brian Noguchi
FAQs
Use CommonJS and NPM modules from the browser
We found that browser-require demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.