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

Next.js+TypeScript项目用nodemon启动报错:ts-node未被识别

解决"ts-node 未被识别为内部或外部命令"及nodemon崩溃问题

问题场景

基于Next.js+TypeScript开发电商Web应用,配置nodemon相关文件后执行npm run dev,终端报错:

"ts-node 未被识别为内部或外部命令、可执行程序或批处理文件"
nodemon提示应用崩溃。

相关配置文件如下:

nodemon.json

{
  "watch": ["server.ts", "src/collections/**/*.ts", "src/trpc/index.ts"],
  "exec": "ts-node --project tsconfig.server.json src/server.ts -- -I",
  "ext": "js ts",
  "stdin": false
}

package.json(修改部分)

...
 "private": true,
  "scripts": {
    "dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts nodemon",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
...

tsconfig.server.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "CommonJS",
    "outDir": "dist",
    "noEmit": false,
    "jsx": "react"
  },
  "include": ["src/server.ts", "src/payload.config.ts"]
}

src/payload.config.ts

import { buildConfig } from "payload/config";
import { webpackBundler } from "@payloadcms/bundler-webpack";
import { mongooseAdapter } from "@payloadcms/db-mongodb";
import { slateEditor } from "@payloadcms/richtext-slate";
import path from "path";
import dotenv from "dotenv";
/* import { Users } from "./collections/Users";
import { Products } from "./collections/Products/Products";
import { Media } from "./collections/Media";
import { ProductFiles } from "./collections/ProductFile";
import { Orders } from "./collections/Orders"; */

dotenv.config({
  path: path.resolve(__dirname, "../.env"),
});

export default buildConfig({
  serverURL: process.env.NEXT_PUBLIC_SERVER_URL || "",
  collections: [/* Users, Products, Media, ProductFiles, Orders */],
  routes: {
    admin: "/sell",
  },
  admin: {
    user: "users",
    bundler: webpackBundler(),
    meta: {
      titleSuffix: "- DigitalHippo",
      favicon: "/favicon.ico",
      ogImage: "/thumbnail.jpg",
    },
  },
  rateLimit: {
    max: 2000,
  },
  editor: slateEditor({}),
  db: mongooseAdapter({
    url: process.env.MONGODB_URL!,
  }),
  typescript: {
    outputFile: path.resolve(__dirname, "payload-types.ts"),
  },
});

解决步骤

1. 安装ts-node及核心依赖

ts-node未被识别的核心原因是未在本地项目中安装该依赖,全局安装可能存在环境变量兼容问题,优先安装到项目开发依赖:

npm install --save-dev ts-node typescript

使用pnpm或yarn的话,替换对应命令即可。

2. 修正nodemon的exec命令(推荐)

为避免本地依赖调用路径问题,在exec命令前添加npx,强制使用项目本地的ts-node执行:
修改nodemon.json中的exec字段:

"exec": "npx ts-node --project tsconfig.server.json src/server.ts"

注:原命令中的-- -I参数若不是业务必需,可先移除,排除参数干扰。

3. 验证ts-node单独运行

先跳过nodemon,直接用ts-node启动服务,排查是否存在服务本身的问题:

npx ts-node --project tsconfig.server.json src/server.ts

如果此命令报错,需先解决server.ts本身的语法错误或依赖缺失问题。

4. 检查辅助依赖

确保cross-env已安装(package.json的dev脚本中用到):

npm install --save-dev cross-env

5. 确认tsconfig配置有效性

检查tsconfig.server.json中的extends路径是否正确,确保根目录存在tsconfig.json,且配置兼容CommonJS模块(ts-node默认以CommonJS模式运行)。

额外排查点

  • 确认src/server.ts文件存在,且路径与nodemon配置完全一致;
  • Windows系统可检查环境变量是否包含node_modules/.bin目录(npm会自动添加,但手动修改环境变量可能丢失);
  • 清理缓存并重新安装依赖:rm -rf node_modules && npm install(Windows用rd /s /q node_modules && npm install)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:15:07