Node.js/Deno中PHP include_path的等价方案及根目录指定方法
Node.js 对应 PHP
include_path 的方案 1. NODE_PATH 环境变量(最接近)
这是和PHP include_path逻辑最像的方式,把项目根目录(或指定目录)加入NODE_PATH后,require/import就能直接从该目录开始查找文件,不用写冗长的相对路径。
举个例子,项目结构如下:
project-root/ ├─ src/ │ ├─ utils/ │ │ └─ helper.js └─ app.js
设置环境变量:
- Windows命令行:
set NODE_PATH=./src - Linux/macOS终端:
export NODE_PATH=./src
之后在app.js里就能直接写:
// CommonJS const helper = require('utils/helper.js'); // ES模块 import helper from 'utils/helper.js';
注意:Node.js官方现在不推荐依赖NODE_PATH,建议优先用下面的配置方式。
2. package.json 配置别名
在项目根目录的package.json中添加exports字段,自定义模块引用别名:
{ "exports": { "#utils/*": "./src/utils/*" } }
引用时直接用别名:
const helper = require('#utils/helper.js'); // ES模块 import helper from '#utils/helper.js';
如果是TypeScript项目,还可以在tsconfig.json的compilerOptions.paths里配置:
{ "compilerOptions": { "baseUrl": ".", "paths": { "@utils/*": ["src/utils/*"] } } }
3. 手动添加模块路径(不推荐生产用)
可以通过module.paths数组手动添加路径,但会影响全局模块加载逻辑,仅适合临时测试:
module.paths.push('./src'); const helper = require('utils/helper.js');
Deno 对应方案
Deno官方推荐用Import Map来实现类似路径别名的功能,也支持直接使用绝对路径。
1. Import Map(官方推荐)
创建import_map.json文件,定义路径别名:
{ "imports": { "@utils/": "./src/utils/" } }
运行Deno时指定该文件:
deno run --import-map=import_map.json app.js
之后在代码里就能这样引用:
import helper from '@utils/helper.js';
2. 绝对路径引用
通过Deno.cwd()获取项目根目录,拼接成绝对路径引用:
const rootDir = Deno.cwd(); import helper from `${rootDir}/src/utils/helper.js`;
内容的提问来源于stack exchange,提问作者Real Dreams
相关产品推荐
相关产品推荐

