我在谷歌应用引擎上运行噩梦。我猜它不起作用。
所以И想要添加DEBUG=nightmare
,但它在启动时失败了。
这是我的package.json
"scripts": {
"preinstall": "apt-get update && apt-get install -y libfontconfig1 libgtk2.0-0 libgconf-2-4 libasound2 libxtst6 libxss1 libnss3 xvfb && npm install nightmare",
"deploy": "gcloud app deploy",
"start": "xvfb-run -a node app.js",
"lint": "samples lint",
"pretest": "npm run lint",
"system-test": "samples test app",
"test": "npm run system-test",
"e2e-test": "samples test deploy"
},
"dependencies": {
"express": "4.15.4",
"nightmare": "2.10.0"
}
这是错误
应用程序启动错误:
appengine-hello-world@0.0.1 start / app
xvfb-run -a DEBUG =梦魇节点app.js
/ usr / bin / xvfb-run:183:/ usr / bin / xvfb-run:DEBUG = nightmare:not found 错误的ERR!文件sh
答案 0 :(得分:4)
AppEngine Standard不支持Node.js.所以你可能在Flex环境中运行。 我从这开始[1]。请参阅package.json差异。 我修改了package.json以匹配你的情况并在app.js中尝试过噩梦。
我可以通过替换来重现你的情况 "开始":" xvfb-run -a node app.js", 在package.json上:
xvfb-run -a DEBUG=nightmare node app.js
上一个命令的帮助页面显示:
-a --auto-servernum try to get a free server number, starting at
--server-num
-e FILE --error-file=FILE file used to store xauth errors and Xvfb
output (default: /dev/null)
-f FILE --auth-file=FILE file used to store auth cookie
(default: ./.Xauthority)
-h --help display this usage message and exit
-n NUM --server-num=NUM server number to use (default: 99)
-l --listen-tcp enable TCP port listening in the X server
-p PROTO --xauth-protocol=PROTO X authority protocol name to use
(default: xauth command's default)
-s ARGS --server-args=ARGS arguments (other than server number and
"-nolisten tcp") to pass to the Xvfb server
(default: "-screen 0 640x480x8")
我看不到有关DEBUG的任何信息...... 所以你可能想做类似的事情:
xvfb-run -e error.log -a node app.js
要保存错误,但我不确定。
我要分享我的配置。
我在运行'sudo npm install'之前和之后与你分享:
我补充说:
"preinstall": "apt-get update && apt-get install -y libfontconfig1 libgtk2.0-0 libgconf-2-4 libasound2 libxtst6 libxss1 libnss3 xvfb && npm install nightmare",
并修改: "开始":"节点app.js", 至: "开始":" xvfb-run -a node app.js",
before:
{
"name": "appengine-hello-world",
"description": "Simple Hello World Node.js sample for Google App Engine Flexible Environment.",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"repository": {
"type": "git",
"url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
},
"engines": {
"node": ">=4.3.2"
},
"scripts": {
"preinstall": "apt-get update && apt-get install -y libfontconfig1 libgtk2.0-0 libgconf-2-4 libasound2 libxtst6 libxss1 libnss3 xvfb && npm install nightmare",
"deploy": "gcloud app deploy",
"start": "xvfb-run -a node app.js",
"lint": "samples lint",
"pretest": "npm run lint",
"system-test": "samples test app",
"test": "npm run system-test",
"e2e-test": "samples test deploy"
},
"dependencies": {
"express": "4.15.4"
},
"devDependencies": {
"@google-cloud/nodejs-repo-tools": "1.4.17"
},
"cloud-repo-tools": {
"test": {
"app": {
"msg": "Hello, world!"
}
},
"requiresKeyFile": true,
"requiresProjectId": true
}
}
'npm install'后,文件自动更新为:
{
"name": "appengine-hello-world",
"description": "Simple Hello World Node.js sample for Google App Engine Flexible Environment.",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"repository": {
"type": "git",
"url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
},
"engines": {
"node": ">=4.3.2"
},
"scripts": {
"preinstall": "apt-get update && apt-get install -y libfontconfig1 libgtk2.0-0 libgconf-2-4 libasound2 libxtst6 libxss1 libnss3 xvfb && npm install nightmare",
"deploy": "gcloud app deploy",
"start": "xvfb-run -a node app.js",
"lint": "samples lint",
"pretest": "npm run lint",
"system-test": "samples test app",
"test": "npm run system-test",
"e2e-test": "samples test deploy"
},
"dependencies": {
"express": "4.15.4",
"nightmare": "^2.10.0"
},
"devDependencies": {
"@google-cloud/nodejs-repo-tools": "1.4.17"
},
"cloud-repo-tools": {
"test": {
"app": {
"msg": "Hello, world!"
}
},
"requiresKeyFile": true,
"requiresProjectId": true
}
}
我与噩梦共享一个片段js:
'use strict';
// [START app]
const express = require('express');
const app = express();
const Nightmare = require('nightmare')
app.get('/', (req, res) => {
Nightmare({show: false})
.goto('https://google.com')
.wait('body')
.insert('input[aria-label="Search"]', 'node-nightmare github.com')
.click('input[type="submit"]')
.wait(1000)
.wait('body')
.evaluate(function() {
// return $('a:contains("node-nightmare")').text();
// res.status(200).send($('a:contains("node-
nightmare")').text()).end();
console.log('EVALUATE');
})
.then(function(ret) {
console.log('THEN');
console.log(ret)
});
res.status(200).send('Hello, world!!!!!').end();
});
// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
// [END app]
您可以在本地服务器上运行: npm开始 或部署到App Engine gcloud app deploy
希望它有帮助!
[1] https://cloud.google.com/appengine/docs/flexible/nodejs/quickstart