2015-09-20 1 views
0

У меня есть приложение Node.js, которое работает правильно на локальном хосте, но не в VM Compute Engine. Вот отрывок:Невозможно запустить приложение в Google Compute Engine VM

try { 
    gcloud = require('gcloud'); 
    var storage = gcloud.storage({ projectId: 'project-id' }); 
    var bucket = storage.bucket('my-bucket'); 
    bucket.file(src_file).createReadStream().pipe(fs.createWriteStream(src_file)); 
} catch (e) { 
    e = 'Error loading required classes for gcloud: '+gcloud+ ': '+e 
    console.log(e) 
    res.status(200).send(e); 
} 

Когда я запускаю этот код

undefined: Error: /app/node_modules/gcloud/node_modules/hash-stream-validation/node_modules/sse4_crc32/build/Release/sse4_crc32.node: invalid ELF header

Похоже, я не в состоянии импортировать классы gcloud, но я не могу понять, почему это работает в локальном, но не на сервере GCE?

ответ

1

Неверный ELF звучит так, как вы загружались с локального хоста или скомпилированы в другой среде. Эти отпечатки должны быть скомпилированы/настроены на сервере Google. Вы писали: these instructions?

+0

Я прочитал инструкции для https://cloud.google.com/nodejs/getting-started/run-on-compute-engine, но действительно ли мне нужно выполнить всю эту конфигурацию только для развертывания моего приложения? Пример этого примера: https://cloud.google.com/nodejs/getting-started/using-cloud-datastore В примере с «Структурированными данными» команда «gcloud preview app deploy app.yaml -set-default» была достаточно для развертывания приложения на сервере GCE. Я установил этот пример, и я смог запустить его как на локальном хосте, так и на сервере GCE с помощью этой простой команды развертывания – Kwame

+1

@Kwame - существуют различные механизмы развертывания, которые требуют различной конфигурации и предоставляют различные компромиссы. Если вы используете «приложение предварительного просмотра gcloud», вы используете [Управляемые виртуальные машины] (https://cloud.google.com/appengine/docs/managed-vms/), которые работают в GCE, но немного более ограниченные среды. Если вы хотите работать на необработанной виртуальной машине GCE с большей гибкостью, потребуется больше работы и конфигурации. –

+2

Спасибо, Миша. С момента моего последнего комментария я сделал несколько шагов. Я узнал, что «Недопустимый заголовок ELF» относится к «Исполняемому и связанному формату»: https://community.oracle.com/thread/3749710, который имеет какое-то отношение к eclipse (моя IDE), поэтому я переместил код Eclipse, и я смог загрузить его на сервер GCE, и теперь требуются соответствующие классы gcloud без каких-либо ошибок. Приложение все еще не работает, но я предполагаю, что это другая проблема. Еще раз спасибо. – Kwame