node.js - 第一个 node.js 项目无法连接到 mongodb
问题描述
这是我的第一个 node.js 项目,我正处于将 node.js 与 mongoose 和 MongoDB 连接的阶段。
我刚刚从 mongodb 安装了 api,并在终端中输入了“npm run devstar”t,这是我得到的错误...
"PS C:\Users\ryant\Desktop\lets-travel> npm run devstart
let-travel@0.0.0 devstart C:\Users\ryant\Desktop\lets-travel nodemon ./bin/www
[nodemon] 2.0.4 [nodemon] 随时重启,输入rs
[nodemon] 观看路径:.
[nodemon] 看扩展:js,mjs,json
[nodemon] 开始node ./bin/www
C:\Users\ryant\Desktop\lets-travel\bin\www:1 npm/usr/bin/env ^
ReferenceError:未定义 npm
**at Object.<anonymous> (C:\Users\ryant\Desktop\lets-travel\bin\www:1:1)** (this is the only line that is highlighted the rest are greyed out)
at Module._compile (internal/modules/cjs/loader.js:1251:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
at Module.load (internal/modules/cjs/loader.js:1100:32)
at Function.Module._load (internal/modules/cjs/loader.js:962:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
[nodemon] 应用程序崩溃 - 启动前等待文件更改...”
我猜这与 api 安装有关,因为我不确定 .
我知道这可能是一个愚蠢的问题,但社区是否有可能列出一些我应该看的东西?
谢谢大家的时间。
这是我的 package.json
{
"name": "lets-travel",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"devstart": "nodemon ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"mongodb": "^3.6.0",
"mongoose": "^5.10.2",
"morgan": "~1.9.1",
"pug": "2.0.0-beta11"
},
"devDependencies": {
"nodemon": "^2.0.4"
}
}
这是我的app.js(api用户名和密码都取出来了)
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const mongoose = require('mongoose');
var indexRouter = require('./routes/index');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
//Set up mongoose connection
mongoose.connect('mongodb:/@cluster0-shard-00-00.qlpe0.mongodb.net:27017,cluster0-shard-00-01.qlpe0.mongodb.net:27017,cluster0-shard-00-02.qlpe0.mongodb.net:27017/database?ssl=true&replicaSet=atlas-syg3pr-shard-0&authSource=admin&retryWrites=true&w=majority');
mongoose.Promise = global.Promise;
mongoose.connection.on('error', (error) => console.error(error.message) );
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
我可以根据要求在评论中添加任何其他内容。
解决方案
根据错误所说,npm 没有定义,看起来你没有安装 npm/nodejs 或者你没有在 env 中设置路径。请运行npm -v
终端/cmd 进行检查。
另外,只是一个快速的建议,不要将您的连接字符串粘贴到任何论坛上,也不要直接在代码中。将其保存在配置文件或环境变量中
推荐阅读
- python - 调用修改输入的函数时如何正确使用z3
- ios - 应用程序安装失败。无法检查应用程序包
- angular - 如何仅为第一次导航更改获取路由器导航结束 url
- algorithm - 通过两个比较函数同时对一个列表进行排序的算法,最大限度地减少不一致对?
- java - 如何在数组列表中搜索字符串并将其删除
- java - 无法将请求的类放在单个 dex 文件中(# 方法:86421 > 65536)
- php - 将 AJAX 与 PHP-MVC 结合使用
- java - java - 暂停所有正在运行的线程一段时间
- javascript - 如何从堆栈溢出中获取新问题的通知?
- azure-functions - 无法使用 Azure 函数验证正确签名的有效负载 XERO webhook