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

npm start执行失败但直接运行node命令正常的问题求助

解决方案:npm start报错但直接node命令正常的问题

针对你遇到的RangeError [ERR_BUFFER_OUT_OF_BOUNDS]问题,虽然直接运行node ./src/server.js正常,但npm脚本执行异常,试试下面这些排查步骤:

  • 检查npm脚本的环境变量差异
    npm运行脚本时会注入自身的环境变量(比如npm_config_*开头的变量),可能干扰了node的运行。可以在src/server.js最顶部添加一行代码:

    console.log('ENV from npm:', Object.keys(process.env).filter(k => k.startsWith('npm_')));
    

    分别运行npm start和node ./src/server.js,对比输出的npm相关环境变量,看有没有异常的变量值导致buffer问题。

  • 修改npm的脚本shell配置
    有时候npm默认的shell会给脚本套一层包装,导致执行环境变化。试试切换npm的脚本shell:

    • Linux/macOS:运行npm config set script-shell bash
    • Windows:运行npm config set script-shell powershell
      之后再执行npm start测试。
  • 强制清理npm缓存
    之前的缓存可能残留了异常数据,运行:

    npm cache clean --force
    rm -rf node_modules package-lock.json
    npm install
    

    重新安装依赖后再启动。

  • 检查是否存在prestart脚本
    npm会自动执行prestart前缀的脚本,如果你的package.json里有"prestart"字段,先注释掉它,再运行npm start,看是不是prestart脚本导致的问题。

  • 在npm脚本中指定绝对路径的node
    可能npm调用的node版本和你直接运行的不一样(即使nvm切换了版本),先通过which node(Linux/macOS)或where node(Windows)找到node的绝对路径,然后修改scripts:

    "start": "/usr/local/bin/node ./src/server.js"
    

    替换成你自己的node路径再测试。

  • 对比终端环境差异
    在package.json里修改start脚本为:

    "start": "env > npm-env.txt && node ./src/server.js"
    

    然后直接运行:

    env > direct-env.txt && node ./src/server.js
    

    对比两个txt文件的内容,找出行不同的环境变量,排查是否有变量干扰了buffer的写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:25:01