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

Express应用执行npm start启动报错SyntaxError崩溃如何解决

问题根因

你当前的启动报错是因为server.js文件被意外混入了HTML代码,Node.js将server.js作为JS文件解析执行时,遇到了不属于JS语法的<!DOCTYPE html>,直接抛出语法错误。同时你的代码还存在其他几处语法、依赖引入错误,按以下步骤修复即可正常启动:

修复步骤

1. 清理server.js中的冗余内容

打开你本地的server.js文件,把文件末尾所有不属于JS代码的内容全部删掉,包括所有HTML代码、最后那段重复的错误的app.listen代码。

2. 引入缺失的path模块

你在代码中使用了path.join读取静态页面,但没有引入path模块,在server.js开头添加引入语句:

const path = require('path');

3. 删除重复的监听代码

你在server.js中写了两次app.listen,最后那段带注释的监听代码语法错误且重复,直接删除即可。

修正后的完整server.js代码

const PORT = 3000;
const path = require('path'); // 新增引入

// 变量stocks的值与'stocks.js'文件中的stocks变量一致
const stocks = require('./stocks.js').stocks;

const express = require("express");
const app = express();


app.use(express.urlencoded({
    extended: true
}));

app.use(express.static('public'));
// 注意:不要添加或修改本行以上的内容。

// 在此处添加你的代码
app.get('/',function(req,res) {
    res.sendFile(path.join(__dirname,'/index.html'));
});

app.get('/listing', function(req, res){
    res.sendFile(path.join(__dirname, '/stocklist.html'))
})

app.get('/sort', function(req, res){
    res.sendFile(path.join(__dirname, '/listingorder.html'))
})

app.post('/placeorder', (req, res) => {
    console.log(req.body)
    res.status(200).send("Placed")
})

app.get('/asc', function(req, res){
    let sorted = stocks.sort(function(a, b) {
        return parseFloat(a.price) - parseFloat(b.price);
    });
    res.status(200).send({stock: sorted})
 })

app.get('/dsc', function(req, res){
   let sorted = stocks.sort(function(a, b) {
       return parseFloat(b.price) - parseFloat(a.price);
   });
   res.status(200).send({stock: sorted})
})

app.get('/stocks', function(req, res) {
    res.status(200).send({stock: stocks});
})

app.listen(PORT, () => {
    console.log(`Server listening on port ${PORT}...`);
});

后续页面正常渲染需补充修复的问题

启动服务后如果页面无法正常展示股票列表,还需要修正以下HTML和前端JS错误:

  • index.html修正标签错误:把第二行的<> 改成<html>,末尾的<html>改成</html>
  • stocklist.html和listingorder.html修正前端JS语法错误:
    • for循环语法错误:for (var i = 0; i <data.stock.length />; i++)改成for (var i = 0; i <data.stock.length; i++)
    • 对象语法错误:let body = {symbol}: document.getElementById("symbol").value改成let body = {symbol: document.getElementById("symbol").value, qty: document.getElementById("qty").value}
    • fetch配置语法错误:method}: "POST"改成method: "POST",同时POST请求发送表单数据需要转成JSON或者FormData格式,否则后台拿不到参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:24:04