有些人可以告诉我为什么我在Windows 7上为一个基本的平均堆栈应用程序执行git push heroku master时会出现此错误?我正在尝试一个基本的平均堆栈应用程序并执行以下命令,最后"git push heroku master"命令导致错误 - bower安装
sh:bower:not found,npm ERR!奇怪的错误127,npm ERR!不行0代码!无法使用npm安装--production依赖项
cd mean-stack
npm install
pm install -g bower
npm install -g yo grunt-cli bower@0.9.2
bower install
git init
git add .
git status
git add -f public/lib
git commit -m "init"
heroku create
git push heroku master
Run Code Online (Sandbox Code Playgroud)
C:\ss\D1\google\04\mean\mean-stack>git push heroku master
Enter passphrase for key '/c/ss/D1/google/04/eclipse/eclipse/.ssh/id_rsa':
Counting objects: 466, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (448/448), done.
Writing objects: 100% (466/466), …Run Code Online (Sandbox Code Playgroud) 这可能来自于MEAN堆栈的各个部分缺乏经验,但是我在app.js代码中看到的各种样板(mean.io,hackathon-starter等)总是有一个调用使用玉石模板引擎.我知道我可以将其切换到ejs等,但我想知道是否有办法使用AngularJS将所有页面都放在.html文件中?我感兴趣的组件/模板功能似乎已经在Angular中,所以如果我尝试服务器.html文件,我不确定我输了什么?
我正在创建一个带有按钮的网页,通过ExpressJS,NodeJs使用Rest API构建从服务器加载数据.
var express=require('express');
var mysql=require('mysql');
var app=express();
var server=app.listen(3000,function(){
console.log("Express is running on port 3000");
});
app.get('/search',function(req,res){
var mysql=require('mysql');
var connection = mysql.createConnection({
connectionLimit : 100, //important
host : 'localhost',
user : 'root',
password : '',
database : 'node-test'
});
connection.connect();
connection.query('SELECT name from users', function(err, rows, fields) {
if (err) throw err;
var data=[];
for(i=0;i<rows.length;i++){
data.push(rows[i].name);
}
res.end(JSON.stringify(data));
});
});Run Code Online (Sandbox Code Playgroud)
此应用程序的HTML页面如下所示
<button >Load from server</button>
<div></div>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click','button', function(){
$.ajax({
url: "http://localhost:3000/search"
}).done(function() { …Run Code Online (Sandbox Code Playgroud)我禁用互联网连接并运行节点服务器npm start,然后它抛出错误:

现在启用互联网连接并运行服务器工作正常:

所以,我想确认在启动服务器时是否真的需要连接到互联网?
如果它确实需要互联网连接,那么有任何想法让服务器脱机运行吗?
如果我连接到互联网并运行服务器,然后插上互联网连接,那么没有任何问题.一切正常.我不知道为什么只运行服务器需要互联网连接.
到现在为止(10.7.2016),express-session的github-page建议了两个mongodb会话商店:
我应该选择哪一个,两者之间有什么区别?通过流行显然connect-mongo获胜,但它真的是"更好"的产品吗?为什么MongoDB本身很难用现有的解决方案编程connect-mongodb-session?
任何建议都适用.
PS:我注意到有几个(过时的)SO问题比较了存储的不同MongoDB支持的会话,但是(据我注意到)非比较这些推荐的两个.
我是Node.js开发的新手,目前正在空闲时间从事宠物项目.
到目前为止,我已经使用passport和passport-jwt为策略创建了JWT身份验证,我在所有RESTful API中都使用它.
现在我想把它与某种Facebook身份验证相结合仍然希望坚持使用令牌身份验证.
目前,这是我生成和获取令牌的方式:
exports.authenticate = function(req, res) {
User.findOne({
email: req.body.email
}, function(err, user) {
if (err)
return res.status(400).send(getErrorMessage(err));
if (!user) {
res.status(400).send({
success: false,
message: 'Authentication failed. User not found.'
});
} else {
if (user.checkPassword(req.body.password)) {
let token = jwt.encode(user, config.secretPhrase);
res.json({
success: true,
token: 'JWT ' + token
});
} else {
res.status(401).send({
success: false,
message: 'Authentication failed. Wrong password.'
});
}
}
});
};
app.route('/api/users/authenticate')
.post(user.authenticate);
Run Code Online (Sandbox Code Playgroud)
并验证我执行以下操作:
let user = …Run Code Online (Sandbox Code Playgroud) 我如何收集客户端发送的信息?在这种情况下,身份证?
我怎样才能获得身份证?
我使用客户端请求:
return $http.post('/api/kill', {id:4}, {
headers: {}
})
Run Code Online (Sandbox Code Playgroud)
当我检查服务器支持req.body console.log(Req.body)我得到:
{ '{"id":4}': '' }
Run Code Online (Sandbox Code Playgroud)
req.body.id返回:
undefined
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到4的id?
EDIT1:
主要代码位于https://github.com/meanjs/mean
服务器端代码:
app.post('/api/kill', function (req, res) {
console.log(req.body); // { '{"id":4}': '' }
console.log(req.body.id); // undefined
});
Run Code Online (Sandbox Code Playgroud) 我已经创建了角度4应用程序,我可以运行它ng serve --open并运行localhost:4200,我想要的是我也创建了api使用nodejs相同的角度项目现在我想运行该API,localhost:4200/api所以我尝试过这样的事情
我的angular 4和nodejs srtucture看起来像这样
/dist
/server
/routes
/server
/src
app.js
package.json
Run Code Online (Sandbox Code Playgroud)
在app.js我用过
app.use(express.static(path.join(__dirname, 'dist')));
app.use('/app/api', apiRoutes);
const port = process.env.PORT || '3000';
server.listen(port, () => console.log(`API running on localhost:${port}`));
Run Code Online (Sandbox Code Playgroud)
一旦我运行使用nodemon app.js并继续localhost:3000它运行我的角度应用程序,它很好,而且我去localhost:3000/app/api它也工作得很好,
但是,当我更改角度应用程序时,它不会自动刷新我的应用程序,因为它正在运行节点应用程序当前用于刷新它我需要运行ng build而不是它将影响我对角度应用程序的新更改
所以,我想要运行ng serve --open它将运行角度应用程序但不运行节点js api所以想要运行两个,一旦我从角度应用程序或节点js应用程序更改它必须自动刷新.
我正在研究MEAN应用程序,我正在为我的项目使用Angular 4.对于身份验证,我已经实现了Passport js Local-strategy.我正在维护持久会话Express-session.事情一直很好,直到这里.
问题
在同一个域session工作正常,我能够验证用户.但在跨域,我无法维持会话.它为跨域中的每个新请求生成新的会话ID.
然后我尝试Passport-jwt但问题是我没有对用户会话的控制.我的意思是如果用户不活动,甚至在服务器重新启动时也token无法从服务器注销用户也不会失效.
所以简单来说,我正在寻找Node js(Express js)中的身份验证解决方案,我可以在其中管理跨域身份验证.
我已经看到了一些博客文章和像这样的问题这样,但它并不能帮助.
谢谢.
编辑
我应该编写自己的代码来实现这一目标吗?如果是这样,我有一个计划.
我的基本计划是:
我认为这也是一个好主意.我只是想要一些建议,无论我是否正在考虑正确的方向.
我会得到这个:
编辑2
我在这里分享我的app.js代码
var express = require('express');
var helmet = require('helmet');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var dotenv = require('dotenv');
var env = dotenv.load();
var …Run Code Online (Sandbox Code Playgroud) 这是我来自路由文件(users.js)的代码
User.findOne({linkedin_id: req.body.linkedin_id}, function(err, linkedinUser) {
if(err) {
console.log('err in finding linkedin user '+err);
}
// if user exits
else if(linkedinUser) {
console.log('user exist');
const token = jwt.sign(linkedinUser, config.secret, {expiresIn: 604800});
res.json({success: true, token: 'JWT '+token, user: {
id: linkedinUser._id,
linkedin_id: linkedinUser.linkedin_id,
name: linkedinUser.name,
username: linkedinUser.username,
email: linkedinUser.email,
lkprofilePic: linkedinUser.profilePic
}, msg: 'user exits'
});
}
// if user doesn't exist
else {
User.create({
linkedin_id: req.body.linkedin_id,
name: req.body.name,
username: req.body.username,
email: req.body.email,
lkprofilePic: req.body.lkprofilePic
}, function(err, result) {
if(err) { …Run Code Online (Sandbox Code Playgroud) mean-stack ×10
node.js ×9
express ×5
angular ×2
javascript ×2
mongodb ×2
angularjs ×1
git ×1
heroku ×1
html ×1
jwt ×1
passport.js ×1