Skip to content
← Back to rules

import/no-absolute-path 可疑

An auto-fix is available for this rule.

它的作用

此规则禁止使用绝对路径导入模块。

为什么这是不好的?

Node.js 允许使用绝对路径(例如 /home/xyz/file.js)导入模块。这种做法是不良实践,因为它将代码与你的计算机绑定,从而导致在分发到 npm 等包管理器时无法使用。

示例

此规则的 错误 代码示例:

js
import f from "/foo";
import f from "/some/path";
var f = require("/foo");
var f = require("/some/path");

此规则的 正确 代码示例:

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

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

{ amd: true } 选项的 错误 代码示例:

js
define("/foo", function (foo) {});
require("/foo", function (foo) {});

{ amd: true } 选项的 正确 代码示例:

js
define("./foo", function (foo) {});
require("./foo", function (foo) {});

配置

此规则接受一个包含以下属性的配置对象:

amd

type: boolean

默认值: false

如果设置为 true,则会解析 AMD 风格的 definerequire 调用中的依赖路径:

js
/* import/no-absolute-path: ["error", { "commonjs": false, "amd": true }] */
define(["/foo"], function (foo) {
  /*...*/
}); // 会被报告
require(["/foo"], function (foo) {
  /*...*/
}); // 会被报告

const foo = require("/foo"); // 被忽略,因为显式设置了 `commonjs: false`

commonjs

type: boolean

默认值: true

如果设置为 true,则会解析 CommonJS 风格的 require 调用中的依赖路径:

js
var foo = require("/foo"); // 会被报告

esmodule

type: boolean

默认值: true

如果设置为 true,则会解析 ES 模块 import 语句中的依赖路径:

js
import foo from "/foo"; // 会被报告

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

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

参考资料