javascript – 无法访问Google Compute Engine上托管的NodeJS Express App
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 无法访问Google Compute Engine上托管的NodeJS Express App,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3524字,纯文字阅读大概需要6分钟。
内容图文
![javascript – 无法访问Google Compute Engine上托管的NodeJS Express App](/upload/InfoBanner/zyjiaocheng/819/39a34b4ea80245a6b4e97d2b4d3d6ac1.jpg)
我在谷歌云上有一个f1-micro实例. IN安装了ubuntu 14.04,NodejS 0.10和mongoDB.现在我已经与yeoman做了一个明确的应用程序,它完全适用于localhost.但是当我尝试在实例中运行它时,我无法访问它!
这是’我做的:
>将本地代码提交给BitBucket
>通过SSH克隆从BitBUcket到Google Compute Engine的代码
>运行命令grunt
>使用端口号访问Google提供的外部IP.在浏览器上,但它说这个网页不可用
这是我的源代码:
** app.js **
'use strict';
// Module dependencies.
var express = require('express'),
path = require('path'),
fs = require('fs'),
methodOverride = require('method-override'),
morgan = require('morgan'),
bodyParser = require('body-parser'),
errorhandler = require('errorhandler');
var app = module.exports = exports.app = express();
app.locals.siteName = "Server";
// Connect to database
var db = require('./config/db');
app.use(express.static(__dirname + '/public'));
// Bootstrap models
var modelsPath = path.join(__dirname, 'models');
fs.readdirSync(modelsPath).forEach(function (file) {
require(modelsPath + '/' + file);
});
var env = process.env.NODE_ENV || 'development';
if ('development' == env) {
app.use(morgan('dev'));
app.use(errorhandler({
dumpExceptions: true,
showStack: true
}));
app.set('view options', {
pretty: true
});
}
if ('test' == env) {
app.use(morgan('test'));
app.set('view options', {
pretty: true
});
app.use(errorhandler({
dumpExceptions: true,
showStack: true
}));
}
if ('production' == env) {
app.use(morgan());
app.use(errorhandler({
dumpExceptions: false,
showStack: false
}));
}
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(methodOverride());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Bootstrap routes
var routesPath = path.join(__dirname, 'routes');
fs.readdirSync(routesPath).forEach(function(file) {
app.use('/', require(routesPath + '/' + file));
});
// Bootstrap api
var apiPath = path.join(__dirname, 'api');
fs.readdirSync(apiPath).forEach(function(file) {
app.use('/api', require(apiPath + '/' + file));
});
// Start server
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('Express server listening on port %d in %s mode', port, app.get('env'));
});
** Gruntfile.js **
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
// Configure a mochaTest task
mochaTest: {
test: {
options: {
reporter: 'spec'
},
src: ['test/**/*.js']
}
},
watch: {
options: {
livereload: true,
},
express: {
files: [ '*.js','routes/*.js', 'models/*.js', 'config/*.js','api/*.js' ],
tasks: [ 'express:dev' ],
options: {
spawn: false // Without this option specified express won't be reloaded
}
}
},
express: {
options: {
port : 3000,
node_env: 'development'
},
dev: {
options: {
script: 'app.js',
node_env: 'development'
}
},
prod: {
options: {
script: 'app.js',
node_env: 'production'
}
}
},
open: {
server: {
url: 'http://localhost:3000'
}
}
});
grunt.registerTask('test', 'mochaTest');
grunt.registerTask('server', function(arg) {
if(arg && arg == 'prod')
{
grunt.task.run([
'express:prod',
'open',
'watch'
]);
}
else
{
grunt.task.run([
'express:dev',
'open',
'watch'
]);
}
});
grunt.registerTask('default', [ 'server' ]);
grunt.registerTask('dist', [ 'server:prod' ]);
};
我尝试用Google提供的内部IP更改app.listen,但仍然没有运气.有任何想法吗?
解决方法:
好的,我只是想通了.实际上非常简单.
问题出在端口上.我只需要更改防火墙设置以允许来自任何来源的端口.而已.
>转到Google Cloud控制台.
>网络>防火墙规则.
>使用tcp和udp范围1-65535查找条目“default-allow-internal”.编辑它并更改源过滤器以允许来自任何源.
>重启应用程序.它现在应该工作.
更新2017年4月27日:现在GCE的流量有所改变.修改源过滤器 – > ip范围为0.0.0.0/0
内容总结
以上是互联网集市为您收集整理的javascript – 无法访问Google Compute Engine上托管的NodeJS Express App全部内容,希望文章能够帮你解决javascript – 无法访问Google Compute Engine上托管的NodeJS Express App所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。