NestJS导入模块失败:添加模块后触发语法错误
问题
在NestJS项目中,将MoviesModule、SearchModule或ConfigModule任意一个添加到AppModule的imports数组后,项目运行报错。核心错误为SyntaxError: Unexpected token '??=',同时伴随进程查找失败提示。
相关代码
import { CategoryService } from './../category/category.service'; import { Module } from '@nestjs/common'; import { DatabaseModule } from './../database/database.module'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { MoviesModule } from '../movies/movies.module'; import { ConfigModule } from '@nestjs/config'; import { SearchModule } from '../search/search.module'; import { PostController } from '../post/post.controller'; import { PostService } from '../post/post.service'; import { CategoryController } from '../category/category.controller'; @Module({ imports: [ DatabaseModule, MoviesModule // 添加此处后出现错误 ], controllers: [AppController, PostController, CategoryController], providers: [AppService, PostService, CategoryService], }) export class AppModule { }
错误日志
Command failed: taskkill /pid 27448 /T /F ERROR: The process "27448" not found. Debugger listening on ws://localhost:9229/7e3b0f6b-4b30-48d8-95cf-8dd5e9865436 Debugger listening on ws://localhost:9229/7e3b0f6b-4b30-48d8-95cf-8dd5e9865436 For help, see: https://nodejs.org/en/docs/inspector D:\projects\my-apps\interview-prep\dist\apps\backend\main.js:65501 cookieAttributeList.unparsed ??= [] ^^^ SyntaxError: Unexpected token '??=' at wrapSafe (internal/modules/cjs/loader.js:1001:16) at Module._compile (internal/modules/cjs/loader.js:1049:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) at Module.load (internal/modules/cjs/loader.js:950:32) at Function.Module._load (internal/modules/cjs/loader.js:790:12) at Function.Module._load (D:\projects\my-apps\interview-prep\node_modules\.pnpm\@nrwl+js@15.8.6_dy3bcy5rzsznsjo6teutqltnt4\packages\js\src\executors\node\node-with-require-overrides.ts:16:27) at Module.require (internal/modules/cjs/loader.js:974:19) at require (internal/modules/cjs/helpers.js:101:18) at Object.<anonymous> (D:\projects\my-apps\interview-prep\node_modules\.pnpm\@nrwl+js@15.8.6_dy3bcy5rzsznsjo6teutqltnt4\packages\js\src\executors\node\node-with-require-overrides.ts:20:1) at Module._compile (internal/modules/cjs/loader.js:1085:14)
解决方案
1. 升级Node.js版本
??=是空值赋值运算符,仅在Node.js v15.0.0及以上版本支持。当前使用的Node.js版本过低,无法解析该语法:
- 执行
node -v查看当前版本 - 升级到v15+版本(推荐LTS版本,比如v16或v18)
2. 修正TypeScript编译配置
确保tsconfig.json的编译目标版本足够高,让TypeScript将新语法转译为当前Node.js可识别的代码:
{ "compilerOptions": { "target": "ES2020" // 或ES2021、ESNext等更高版本 // 其他配置项... } }
3. 清理缓存并重新构建
- 删除编译产物目录:Windows执行
rd /s /q dist,Mac/Linux执行rm -rf dist - 清理包管理缓存:pnpm执行
pnpm cache clean,npm执行npm cache clean --force - 重新安装依赖:
pnpm install或npm install - 重新编译项目:
pnpm build或npm run build
4. 关于进程查找失败提示
这个是开发工具尝试终止旧进程时找不到对应PID导致的次要问题,解决核心语法错误后,重启项目时该提示通常会自动消失。
内容的提问来源于stack exchange,提问作者kittu
相关产品推荐
相关产品推荐

