我正在尝试在 IIS 上托管我的 NodeJS 和 React Web 应用程序,但我似乎无法让它工作。我已经尝试了我可以在网上找到的所有解决方案,但仍然遇到此 http 200 错误。(https://i.sstatic.net/gwYx1isI.png) 另外,我正在尝试将其托管在虚拟机上,我'我不确定这是否会影响任何事情。任何建议表示赞赏!顺便说一句,这是我的 web.config 文件(https://i.sstatic.net/t62x5kyf.jpg)
下面是我在端口 3000 上运行的 server.js 文件
import cors from 'cors';
import express from "express";
import sql from "mssql";
import { PORT } from './config.js';
import inventoryRouter from './routes/inventoryRoute.js';
import transferRouter from './routes/transferRoute.js';
import orderRouter from './routes/orderRoute.js';
import path from 'path';
import { fileURLToPath } from 'url';
const sqlConfig = {
user: "testuser",
password: '1234',
// server: 'DESKTOP-VN9PRPU\\SQLEXPRESS', // or 'localhost' for a local instance
server: 'YIHANG\\SQLEXPRESS',
// server: 'MDPADMIN\\SQLEXPRESS',
database: 'inventory',
driver: 'msnodesqlv8',
options: {
// encrypt: false,
// trustServerCertificate: true,
trustedConnection: false,
encrypt: false
}
};
const app = express();
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, '../frontend/dist')));
let pool;
async function connectDB() {
try {
pool = await new sql.connect(sqlConfig);
app.listen(PORT, () => { //PORT is 3000
console.log("app is running le");
})
console.log("connected le");
} catch (err) {
console.error('error is ', err);
}
}
app.use((req, res, next) => {
req.pool = pool;
next();
})
app.use('/inventory', inventoryRouter);
app.use('/transfers', transferRouter);
app.use('/orders', orderRouter);
app.use('/images', express.static('images'))
connectDB();
我已尝试以下解决方案,但均无济于事
尝试使用
app.listen(process.env.PORT || 3000)
代替 app.listen()
。
在 Windows 上使用 IIS 部署 Node.js 时,可能会出现端口冲突。使用
process.env.PORT
可以动态适配端口,保证通讯顺畅,不冲突。
app.listen(process.env.PORT || 3000)
将从环境变量process.env.PORT
读取端口。
如果它存在并且具有有效值,则 app.listen
将使用该值作为端口。在其他情况下,它将使用 3000
作为默认端口号。