我有一个 microsoft azure 数据库,并且有一个用 typescript 制作的 api,可以在 node.js 服务器上运行,当我在一切正常工作的前一天晚上测试该 api 时,今天早上醒来,我不断收到错误
TypeError: Cannot read properties of undefined (reading 'startsWith')
at connectionStringHasValidScheme (C:\Users\Jordan\Downloads\Website\auth-api\node_modules\mongodb-connection-string-url\lib\index.js:9:30)
at new ConnectionString (C:\Users\Jordan\Downloads\Website\auth-api\node_modules\mongodb-connection-string-url\lib\index.js:85:34)
at parseOptions (C:\Users\Jordan\Downloads\Website\auth-api\node_modules\mongodb\lib\connection_string.js:191:17)
at new MongoClient (C:\Users\Jordan\Downloads\Website\auth-api\node_modules\mongodb\lib\mongo_client.js:51:63)
at Object.<anonymous> (C:\Users\Jordan\Downloads\Website\auth-api\dist\server.js:25:16)
at Module._compile (node:internal/modules/cjs/loader:1358:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
at Module.load (node:internal/modules/cjs/loader:1208:32)
at Module._load (node:internal/modules/cjs/loader:1024:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
这是我的第一个网络开发项目,所以我可能会错过一些非常简单的东西。
import express, { Request, Response } from 'express';
import cors from 'cors';
import { MongoClient } from 'mongodb';
import dotenv from 'dotenv';
dotenv.config();
const app = express();
const port = process.env.PORT || 3000;
console.log('COSMOS_DB_URI:', process.env.COSMOS_DB_URI);
app.use(cors());
app.use(express.json());
const client = new MongoClient(process.env.COSMOS_DB_URI!);
client.connect().then(() => {
const db = client.db('jrfbActivityLogger');
const usersCollection = db.collection('Usernames');
app.post('/login', async (req: Request, res: Response) => {
try {
const { username } = req.body;
const user = await usersCollection.findOne({ username });
if (user) {
res.status(200).json({ success: true });
} else {
res.status(401).json({ success: false, message: 'Authentication failed' });
}
} catch (error) {
console.error('Error:', error);
res.status(500).json({ success: false, message: 'An error occurred' });
}
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
}).catch((err) => {
console.error('Failed to connect to database:', err);
});
COSMOS_DB_URI=mongodb://myDBUsername:[email protected]:myport/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@mydb@
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"rootDir": "./src",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
尝试了一切,从重命名 env 文件、在连接脚本中添加引号以及重新安装所有节点模块,我似乎无法找出问题所在。我可以确认我的 env 文件位于我的 api 根目录中并且语法是正确的。
问题在于应用程序未通过
--env-file=.env
执行。