Я создал локальный эмулятор базы данных Google на своей машине с Windows. Когда я запускаю эмулятор я получаю следующий результат:Не удается подключиться к локальному хранилищу данных
C:\Users\susan\AppData\Local\Google\Cloud SDK>gcloud beta emulators datastore start --project=susantestproject
WARNING: Reusing existing data in [C:\Users\susan\AppData\Roaming\gcloud\emulators\datastore].
Executing: cmd /c C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\gcd.cmd start --host=localhost --port=8578 --store_on_disk=True --consistency=0.9 --allow_remote_shutdown C:\Users\susan\AppData\Roaming\gcloud\emulators\datastore
[datastore] API endpoint: http://localhost:8578/datastore
[datastore] If you are using a library that supports the DATASTORE_LOCAL_HOST environment variable, run:
[datastore]
[datastore] export DATASTORE_LOCAL_HOST=localhost:8578
[datastore]
[datastore] Invoking dev_appserver with args: [--disable_update_check --jvm_flag=-Doauth.is_admin=true --property=datastore.index_configuration_format=yaml --port=8578 --address=localhost --property=datastore.force_is_high_replication=true --property=datastore.default_high_rep_job_policy_unapplied_job_pct=10.0 --allow_remote_shutdown C:\Users\susan\AppData\Roaming\gcloud\emulators\datastore].
[datastore] Executing [C:\Program Files\Java\jre1.8.0_74\bin\java, -Doauth.is_admin=true, -javaagent:C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\.appengine\lib\agent\appengine-agent.jar, -Xbootclasspath/p:C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\.appengine\lib\override\appengine-dev-jdk-overrides.jar, -classpath, C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\CloudDatastore.jar;C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\.appengine\lib\impl\appengine-api.jar;C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\.appengine\lib\appengine-tools-api.jar;C:\Users\susan\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\gcd\.appengine\lib\impl\appengine-api-stubs.jar, com.google.appengine.tools.development.DevAppServerMain, --property=kickstart.user.dir=C:\Users\susan\AppData\Local\Google\Cloud SDK, --disable_update_check, --property=datastore.index_configuration_format=yaml, --port=8578, --address=localhost, --property=datastore.force_is_high_replication=true, --property=datastore.default_high_rep_job_policy_unapplied_job_pct=10.0, --allow_remote_shutdown, C:\Users\susan\AppData\Roaming\gcloud\emulators\datastore]
[datastore] Apr 08, 2016 8:14:51 PM java.util.prefs.WindowsPreferences <init>
[datastore] WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
[datastore] Apr 08, 2016 8:14:51 PM com.google.apphosting.utils.jetty.JettyLogger info
[datastore] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger [datastore] Apr 08, 2016 8:14:51 PM com.google.appengine.tools.development.DevAppServerImpl setServerTimeZone [datastore] WARNING: Unable to set the TimeZone to UTC (this is expected if running on JDK 8)
[datastore] Apr 08, 2016 8:14:51 PM com.google.apphosting.utils.jetty.JettyLogger info
[datastore] INFO: jetty-6.1.x
[datastore] Apr 08, 2016 8:14:51 PM com.google.apphosting.utils.jetty.JettyLogger info
[datastore] INFO: Started [email protected]:8578
[datastore] Apr 08, 2016 8:14:52 PM com.google.appengine.tools.development.AbstractModule startup
[datastore] INFO: Module instance default is running at http://localhost:8578/
[datastore] Apr 08, 2016 8:14:52 PM com.google.appengine.tools.development.AbstractModule startup
[datastore] INFO: The admin console is running at http://localhost:8578/_ah/admin
[datastore] Apr 08, 2016 8:14:52 PM com.google.appengine.tools.development.DevAppServerImpl doStart
[datastore] INFO: Dev App Server is now running
Я также установить следующие переменные окружения:
set DATASTORE_DATASET=susanproject
set DATASTORE_HOST=http://localhost:8578
set DATASTORE_EMULATOR_HOST=localhost:8578
set DATASTORE_PROJECT_ID=susanproject
В моем коде, тогда у меня есть следующий код:
var gcloud = require('gcloud')({
projectId: 'susantestproject',
});
var datastore = gcloud.datastore({
apiEndpoint: 'http://localhost:8578'
});
app.get('/', function (req, res) {
// Save data to Datastore.
var blogPostData = {
title: 'How to make the perfect homemade pasta',
author: 'Andrew Chilton',
isDraft: true
};
var blogPostKey = datastore.key('BlogPost');
datastore.save({
key: blogPostKey,
data: blogPostData
}, function(err) {
// `blogPostKey` has been updated with an ID so you can do more operations
// with it, such as an update.
blogPostData.isDraft = false;
datastore.save({
key: blogPostKey,
data: blogPostData
}, function(err) {
if (!err) {
// The blog post is now published!
res.status(200).send('Hello, world! An insert has been made!');
}
});
});
Когда я запускаю код и нажимаю localhost: 3000 (поэтому он попадает в каталог «/»), я получаю следующий вывод:
App listening at http://:::3000
E0408 20:14:36.906000000 8752 tcp_client_windows.c:106] on_connect error: No connection could be made because the target machine actively refused it.
E0408 20:14:36.910000000 8752 parsing.c:472] Unknown frame type 50
E0408 20:14:37.909000000 6356 tcp_client_windows.c:106] on_connect error: No connection could be made because the target machine actively refused it.
E0408 20:14:37.913000000 6356 tcp_client_windows.c:106] on_connect error: No connection could be made because the target machine actively refused it.
E0408 20:14:37.917000000 6356 parsing.c:472] Unknown frame type 50
Я могу подключиться к консоли администратора по адресу http://localhost:8578/_ah/admin, но ничего не вставляется в хранилище данных. В общем, я хотел бы подключиться к локальному эмулятору, но не могу.
UPDATE:
Для щеколду этого я создал виртуальную машину, установил Ubuntu, и попытался установить Google Datastore в Linux против Windows, чтобы увидеть, если это была проблема платформы.
Я также вернулся в версию gcloud до 0.30.0, и если я использую эту api, все будет работать. Если я попробую 0.30.0+, эти ошибки возникнут.
Нет Я нет. Извините, я не знаком с этим инструментом? Как включить это в мой код nodejs? – user2924127
(есть проблемы с форматированием моего ответа) + Загрузить архив из [ссылки, которую они приводят в примечаниях к выпуску] (https://storage.googleapis.com/gcd/tools/gcd-grpc-1.0.0.zip) + Распакуйте ZIP - Выполнить ./gcs.sh создать mydatadir + Run ./gcs.sh начать mydatadir В другой перспективе оболочки: экспорт DATASTORE_EMULATOR_HOST = локальный: 8080 экспорт DATASTORE_EMULATOR_HOST = локальный : 8080 Теперь запустите приложение Существует gcs.bat, который можно запустить, если вы используете окна. –
Спасибо, я поднял его, но есть ли URL-адрес администратора? Я устал localhost: 8080/_ah/admin, но не повезло? – user2924127