【发布时间】:2017-04-27 14:55:02
【问题描述】:
我在谷歌云上有一个 f1-micro 实例。 IN 安装了 ubuntu 14.04、NodejS 0.10 和 mongoDB。现在我用 yeoman 做了一个快速应用程序,它在 localhost 上完美运行。但是当我尝试在实例中运行它时,我无法访问它!
这是我的工作:
- 将本地代码提交到 BitBucket
- 通过 SSH 将代码从 BitBUcket 克隆到 Google Compute Engine
- 运行命令咕噜声
- 通过端口号访问谷歌提供的外部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,但仍然没有成功。有什么想法吗?
【问题讨论】:
-
好的,到目前为止,我将端口更改为 80 并且看起来可以正常工作。但是我想使用端口 3000 并且不知道在谷歌云控制台中使用它的任何方式
标签: javascript node.js