Skip to content
← Back to rules

import/no-nodejs-modules スタイル

何を行うか

Node.js の組み込みモジュールの使用を禁止します。ブラウザ環境で利用できないため、クライアントサイドのウェブプロジェクトにおいて特に有用です。

なぜ問題なのか

Node.js の組み込みモジュール(例:fspathcrypto)はブラウザでは利用できません。したがって、クライアントバンドル内でこれらのモジュールをインポートすると、実行時エラーが発生するか、バンドラが重いポリフィルやシャイムを注入する必要が生じます。 これによりバンドルサイズが増加し、サーバー専用のロジックがクライアントに漏れ出す可能性があり、開発環境と本番環境の違いが本番環境まで気付かれずに隠れてしまうリスクがあります。

このルールに対して不適切なコードの例:

js
import fs from "fs";
import path from "path";

var fs = require("fs");
var path = require("path");

このルールに対して適切なコードの例:

js
import _ from "lodash";
import foo from "foo";
import foo from "./foo";

var _ = require("lodash");
var foo = require("foo");
var foo = require("./foo");

/* import/no-nodejs-modules: ["error", {"allow": ["path"]}] */
import path from "path";

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます:

allow

type: string[]

許可されるモジュール名の配列。デフォルトは空配列です。

使用方法

このルールを設定ファイルまたは CLI で有効化するには、次のようにします:

json
{
  "plugins": ["import"],
  "rules": {
    "import/no-nodejs-modules": "error"
  }
}
bash
oxlint --deny import/no-nodejs-modules --import-plugin

参照