A Node loader module for enhanced-require
npm install node-loader-nextjs.node extension.
node-loader only works on the node/async-node/electron-main/electron-renderer/electron-preload targets.
node-loader:
console
$ npm install node-loader --save-dev
`
Setup the target option to node/async-node/electron-main/electron-renderer/electron-preload value and do not mock the __dirname global variable.
webpack.config.js
`js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
},
],
},
};
`
$3
index.js
`js
import node from "node-loader!./file.node";
`
And run webpack via your preferred method.
$3
index.js
`js
import node from "file.node";
`
Then add the loader to your webpack config. For example:
webpack.config.js
`js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
},
],
},
};
`
And run webpack via your preferred method.
Options
| Name | Type | Default | Description |
| :-------------------: | :------------------: | :---------------------: | :----------------------------------------------------------- |
| flags | {Number} | undefined | Enables/Disables url/image-set functions handling |
| name | {String\|Function} | '[contenthash].[ext]' | Specifies a custom filename template for the target file(s). |
$3
Type: Number
Default: undefined
The flags argument is an integer that allows to specify dlopen behavior.
See the process.dlopen documentation for details.
index.js
`js
import node from "file.node";
`
webpack.config.js
`js
const os = require("os");
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
options: {
flags: os.constants.dlopen.RTLD_NOW,
},
},
],
},
};
`
$3
Type: String|Function
Default: '[contenthash].[ext]'
Specifies a custom filename template for the target file(s).
#### String
webpack.config.js
`js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
options: {
name: "[path][name].[ext]",
},
},
],
},
};
`
#### Function
webpack.config.js
`js
module.exports = {
target: "node",
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.node$/,
loader: "node-loader",
options: {
name(resourcePath, resourceQuery) {
// resourcePath - /absolute/path/to/file.js
// resourceQuery - ?foo=bar
if (process.env.NODE_ENV === "development") {
return "[path][name].[ext]";
}
return "[contenthash].[ext]";
},
},
},
],
},
};
``