You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中引入单个文件的最简洁实现方式是什么?

嘿,我太懂这种每次写模块导入都要跟相对路径较劲、还要反复写path.resolve(__dirname, ...)的烦躁感了!之前我也被这个问题折腾过,给你分享几个实用又靠谱的解决方案,能让你的模块引入瞬间清爽起来:

1. 用NODE_PATH环境变量简化导入

你可以把项目的核心目录(比如src)加入到NODE_PATH环境变量中,这样Node.js会自动在这个目录下查找你要导入的模块,不用再写冗长的相对路径。

比如在package.json的scripts里配置启动命令(跨平台的话可以用cross-env来统一语法):

{
  "scripts": {
    "start": "cross-env NODE_PATH=./src node index.js"
  }
}

之后在代码里就可以直接写:

const myModule = require('utils/file.js');

不用再纠结../或者./的层级了。

2. 官方推荐:Node.js子路径导入(Node.js 14+)

这是Node.js官方推出的解决方案,完全不需要依赖第三方工具,通过在package.json里定义imports字段来创建模块别名:

{
  "imports": {
    "#utils/*": "./src/utils/*",
    "#config": "./src/config/index.js"
  }
}

配置好之后,不管你的文件在哪个目录,都可以直接用别名导入:

// CommonJS
const config = require('#config');
const helper = require('#utils/helper.js');

// ES模块也支持
import config from '#config';
import { helper } from '#utils/helper.js';

这个方法既清晰又可靠,还能避免相对路径混乱,非常推荐。

3. 自定义根目录导入函数

如果不想修改环境变量或者package.json,你可以自己封装一个简单的函数来简化导入。在项目根目录创建一个requireRoot.js文件:

const path = require('path');
// 定义项目根目录
const ROOT_DIR = path.resolve(__dirname);

module.exports = (modulePath) => {
  return require(path.resolve(ROOT_DIR, modulePath));
};

之后在其他文件里,只需要先导入这个函数,再用它来加载模块:

const requireRoot = require('./requireRoot');
const myModule = requireRoot('src/utils/file.js');

这样你只需要写从根目录开始的路径,不用再计算相对层级了。

4. ES模块项目用导入映射(Node.js 16.14+)

如果你的项目已经切换到ES模块(package.json里有"type": "module"),可以用导入映射来创建全局别名。在项目根目录创建import-map.json:

{
  "imports": {
    "@/": "./src/"
  }
}

启动项目的时候加上--import-map参数:

node --import-map import-map.json index.js

之后就能用简洁的别名导入模块:

import { func } from '@/utils/file.js';
import config from '@/config/index.js';

这些方法都能帮你摆脱相对路径的困扰,选最适合你项目版本和开发习惯的就行~

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:34