我觉得这必须埋在文档中的某处,但我找不到它.
你如何在ExpressJS中关闭或结束或杀死(无论如何)会话?
我只是想创建一个输出给定URL的HTTP状态的节点服务器.
当我尝试用res.write刷新响应时,我得到错误:抛出新的TypeError('第一个参数必须是字符串或缓冲区');
但如果我用console.log替换它们,一切都很好(但我需要将它们写入浏览器而不是控制台).
代码是
var server = http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/plain"});
request({
uri: 'http://www.google.com',
method: 'GET',
maxRedirects:3
}, function(error, response, body) {
if (!error) {
res.write(response.statusCode);
} else {
//response.end(error);
res.write(error);
}
});
res.end();
});
server.listen(9999);
Run Code Online (Sandbox Code Playgroud)
我相信我应该在某个地方添加一个回调,但很困惑,任何帮助都表示赞赏.
我需要使用Node.js压缩整个目录.我目前正在使用node-zip,每次进程运行时都会生成一个无效的ZIP文件(从这个Github问题可以看出).
是否有另一个更好的Node.js选项可以让我压缩目录?
编辑:我最终使用归档
writeZip = function(dir,name) {
var zip = new JSZip(),
code = zip.folder(dir),
output = zip.generate(),
filename = ['jsd-',name,'.zip'].join('');
fs.writeFileSync(baseDir + filename, output);
console.log('creating ' + filename);
};
Run Code Online (Sandbox Code Playgroud)
参数的样本值:
dir = /tmp/jsd-<randomstring>/
name = <randomstring>
Run Code Online (Sandbox Code Playgroud)
更新:对于那些询问我使用的实现的人,这里是我的下载器的链接:
我必须将我的npm app的版本从0.1更改为0.0.1,以便npm不要这样做.
$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: invalid version: 0.1
npm ERR! at validVersion (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modul
es/read-package-json/read-json.js:571:40)
npm ERR! at final (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read
-package-json/read-json.js:323:23)
npm ERR! at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag
e-json/read-json.js:139:33
npm ERR! at cb (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/slide/l
ib/async-map.js:48:11)
npm ERR! at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag
e-json/read-json.js:301:48
npm ERR! at fs.js:207:20
npm ERR! at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! …
Run Code Online (Sandbox Code Playgroud) 使用Node.js处理将视频文件流式传输到html5视频播放器的正确方法是什么,以便视频控件继续工作?
我认为这与处理标题的方式有关.无论如何,这是背景信息.代码有点冗长,但是,它非常简单.
我学会了如何轻松地将小视频文件流式传输到HTML5视频播放器.通过这种设置,控件在我无需任何工作的情况下工作,视频流完美无瑕.此处提供了包含示例视频的完整工作代码的工作副本,可在Google Docs上下载.
客户:
<html>
<title>Welcome</title>
<body>
<video controls>
<source src="movie.mp4" type="video/mp4"/>
<source src="movie.webm" type="video/webm"/>
<source src="movie.ogg" type="video/ogg"/>
<!-- fallback -->
Your browser does not support the <code>video</code> element.
</video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
服务器:
// Declare Vars & Read Files
var fs = require('fs'),
http = require('http'),
url = require('url'),
path = require('path');
var movie_webm, movie_mp4, movie_ogg;
// ... [snip] ... (Read index page)
fs.readFile(path.resolve(__dirname,"movie.mp4"), function …
Run Code Online (Sandbox Code Playgroud) 如何与Socket.io 1.0和Express 4.x共享会话?我使用Redis商店,但我认为这无关紧要.我知道我必须使用中间件来查看cookie和获取会话,但不知道如何.我搜索但找不到任何工作
var RedisStore = connectRedis(expressSession);
var session = expressSession({
store: new RedisStore({
client: redisClient
}),
secret: mysecret,
saveUninitialized: true,
resave: true
});
app.use(session);
io.use(function(socket, next) {
var handshake = socket.handshake;
if (handshake.headers.cookie) {
var str = handshake.headers.cookie;
next();
} else {
next(new Error('Missing Cookies'));
}
});
Run Code Online (Sandbox Code Playgroud) 我想在gulp任务运行或运行时登录到stdout(配置环境).
像这样的东西:
gulp.task('scripts', function () {
var enviroment = argv.env || 'development';
var config = gulp.src('config/' + enviroment + '.json')
.pipe(ngConstant({name: 'app.config'}));
var scripts = gulp.src('js/*');
return es.merge(config, scripts)
.pipe(concat('app.js'))
.pipe(gulp.dest('app/dist'))
.on('success', function() {
console.log('Configured environment: ' + environment);
});
});
Run Code Online (Sandbox Code Playgroud)
我不确定我应该回应什么事件或在哪里找到这些列表.有什么指针吗?非常感谢.
处理NodeJS应用程序中的后台进程有什么好处?
场景:在用户向应用程序发布内容后,我想要处理数据,从外部资源请求其他数据等.所有这些都非常耗时,所以我想要它来自req/res循环.理想的情况是拥有一个可以快速转储作业的作业队列,守护程序或任务运行器将始终使用最旧的作业并对其进行处理.
在RoR中,我会用延迟工作这样做.这个API的Node等价物是什么?
无论我在哪个目录,以及在cmd.exe中的"npm"后输入的内容,我都会遇到此错误.这是npm-debug.log:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm v2.14.12
10 error code EISDIR
11 error errno -4068
12 error …
Run Code Online (Sandbox Code Playgroud) 如果两个不同的开发人员正在使用不同版本在最初创建的项目节点(12/15)NPM(6/7)的使用package-lock.json
"lockfileVersion": 1
,开发者在使用NPM 7X安装新的软件包似乎package-lock.json
是重新创建的使用"lockfileVersion": 2
.
这似乎会给使用 npm v6 的开发人员带来问题,因为它尝试使用lockfileVersion 2
,但最终会产生新的差异。
npm WARN read-shrinkwrap 这个版本的 npm 兼容 lockfileVersion@1,但是 package-lock.json 是为 lockfileVersion@2 生成的。我会努力做到最好!
有什么方法可以指定较新版本的npm
to only use "lockfileVersion": 1
?还是我们只需要让所有开发人员都使用同一版本npm
?