我正在使用ES6类在Node中捆绑一些功能.这是(基本上)它的样子:
class processDocs {
constructor(id) {
this.id = id;
// console.log(this) returns { id: id }
}
getDocs(cb) {
// console.log(this) returns null
docs
.query(qb => {
qb.where('id', this.id);
})
.fetch()
.then(function(documents) {
cb(null, documents);
})
;
}
alterDocs(documents, cb) {
//some logic
}
reindexSearch(cb) {
//some logic
}
process() {
// console.log(this) returns { id: id }
async.waterfall([
this.getDocs,
this.alterDocs,
this.reindexSearch
]);
}
}
export default processDocs;
Run Code Online (Sandbox Code Playgroud)
我认为使用ES6类,分配公共变量的方法是简单引用this,通过构造函数初始化这些变量的方式正是它在我的类定义中显示的方式.
这是我如何调用类(在单独的文件中):
var Processor = require('./processDocs');
var pr = new …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 webpack 和 ES6 的 TypeScript。我正在尝试导入模块 Showdown 并使用它来将 Markdown 转换为 HTML。这是我的app.ts代码:
/// <reference path="../typings/tsd.d.ts" />
import 'zone.js';
import 'reflect-metadata';
import 'es6-shim';
import * as showdown from 'showdown';
import {Component, View, bootstrap} from 'angular2/angular2';
@Component({
selector: 'markdown-app'
})
@View({
templateUrl: '/app/markdownApp.html'
})
class MarkdownAppComponent {
public html: string;
private md: any;
constructor() {
this.html = '';
this.md = showdown.Converter();
}
public updateValue(val) {
this.html = this.md.makeHtml(val);
}
}
bootstrap(MarkdownAppComponent);
Run Code Online (Sandbox Code Playgroud)
当我尝试将 TS 转换为 ES6 时,出现以下错误:
ERROR in ./src/app/app.ts
(23,24): error …Run Code Online (Sandbox Code Playgroud) 我是javascript和SASS源地图的忠实粉丝; 但是,我不想将源映射加载到生产中,原因有两个:原始源代码可用,并且它不能很好地利用带宽.
但是,有时候,生产中需要调试(我们都看到了前端的生产错误).
有没有办法让我在事后指定源地图?例如,我可以在本地或在VPN锁定服务器后面或甚至在用户不可见的文件夹中提供源地图.我可以在运行时或指定设置并重新加载页面时这样做.(实际上,如果我能坚持那个甚至更好的设置).
我正在尝试通过 laravel 连接到 pgsql 并最终完成了所有设置(pgsql 服务器正在运行,pdo 已安装,所有库已安装)。我在通过 CPanel/WHM 管理的 VPS (CentOS) 上运行。
这是我正在做的事情:我正在尝试使用 migrate:install 通过 artisan(Laravel 的命令行)创建用户数据库。
对于那些不使用 Laravel 的,artisan 使用 php 的 PDO for pgsql 进行连接。这是我的设置:
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
),
Run Code Online (Sandbox Code Playgroud)
我还设置了一个 test.php 文件:
$dbconn = pg_connect("host=localhost port=5432 dbname=dbname user=username password=password");
Run Code Online (Sandbox Code Playgroud)
这也失败了。我使用 phpPgAdmin 来查看发生了什么,所有权限都设置正确,数据库显示,用户名正确,密码相同。我检查了 postgre(顺便说一句 8.4.12 版)在哪里运行,phpPgAdmin 告诉我“localhost:5432”。
我通过命令行得到的错误如下:
SQLSTATE[08006] [7] FATAL: no pg_hba.conf entry for host "::1", user …Run Code Online (Sandbox Code Playgroud) 我正在使用Gulp收集前端内容(通过gulp-front-matter插件),然后在聚合之后,我将其保存到另一个文件中.在其他数据中,我正在保存一堆CSS.这就是我的compileCSS任务:
var collected = [];
gulp.src('./client/**/*.html')
.pipe(frontMatter({ property: 'meta', remove: true }))
.pipe(through.obj(function(file, enc, callback) {
var css = file.meta;
collected.push(css);
}))
.pipe(gulp.dest('./build/templates'))
.on('end', function() {
var cssPath = ['build', 'assets', 'css', 'compiled.css'];
fs.writeFileSync(cssPath.join(path.sep), cssPath);
})
Run Code Online (Sandbox Code Playgroud)
;
该任务按预期工作(注意,它是一个简化版本).一切都按预期工作,我得到一个compiled.css包含所有前端CSS的文件.但是,我发现不仅需要在我的常规css文件中使用Prefixer,还需要在这个新的compiled.css上使用Prefixer.所以我创建了一个prefix任务:
gulp.task('prefix', ['compileCSS', 'copy'], function() {
gulp.src('./build/assets/css/*.css')
.pipe(autoprefixer({ browsers: ['last 3 versions'] }))
.pipe(gulp.dest('build'))
;
});
Run Code Online (Sandbox Code Playgroud)
现在,问题是该on('end'函数在所有任务结束时运行,而不仅仅是compileCSS任务.
我的问题是,有没有办法为每项任务注入"on end"类型的任务?或者有没有办法以某种方式使用流(因为最后一个任务不是一个实际的流,并没有利用它,我不知道如何).
我使用的是 Latin1 编码的数据库,无法将其更改为 UTF-8,这意味着我遇到了某些应用程序数据的问题。我正在使用 Tesseract 对文档进行 OCR(tesseract 以 UTF-8 编码)并尝试使用 iconv-lite;但是,它会创建一个缓冲区并将该缓冲区转换为字符串。但同样,缓冲区到字符串的转换不允许“latin1”编码。
我已经阅读了一堆问题/答案;然而,我得到的只是设置客户端编码和类似的东西。
有任何想法吗?
每当我使用vim,并向上,向下,向左或向右按下时,它分别映射到A,B,C,D,但仅在插入模式下.在插入模式之外,键工作正常.我检查了.vimrc文件,但没有发现可能导致此问题的任何可疑内容.
我在Mac,OS X 10.8和VIM 7.3.923上(刚刚升级,也没有解决任何问题).
我跑:map了导致:
gx <Plug>NetrwBrowseX
<Plug>NetrwBrowseX * :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<CR>
<BS> "-d
<D-x> "*d
<D-c> "*y
<D-v> "-d"*P
<D-v> "*P
Run Code Online (Sandbox Code Playgroud)
而:imap这导致:
<D-v> <C-R>*
Run Code Online (Sandbox Code Playgroud)
想法?
我正在尝试使用Bookshelf和Express 4.0,似乎无法使它们一起工作或者更确切地说,我似乎无法遵循"最佳实践".Bookshelf文档提到应该始终在整个应用程序中重用相同的实例.它甚至列举了一个例子:
// When the app starts
var app = express();
var knex = require('knex')(dbConfig);
var bookshelf = require('bookshelf')(knex);
app.set('bookshelf', bookshelf);
// elsewhere, to use the bookshelf client:
var bookshelf = app.get('bookshelf');
var Post = bookshelf.Model.extend({
// ...
});
Run Code Online (Sandbox Code Playgroud)
但是,当我必须app.get()在一个单独的文件中使用时,我似乎无法使它工作.例如,这是我的app.js文件(我的整个应用程序的根目录):
var express = require('express');
var app = express();
var db = require('./server/db/db');
app.set('bookshelf', db);
var api = require('./server');
app.use(api);
Run Code Online (Sandbox Code Playgroud)
这是我db.js上面需要的文件:
var express = require('express');
var app = express();
var knex …Run Code Online (Sandbox Code Playgroud) node.js ×4
javascript ×3
angularjs ×1
babeljs ×1
bookshelf.js ×1
centos ×1
ecmascript-6 ×1
encoding ×1
express ×1
gulp ×1
laravel ×1
latin1 ×1
php ×1
postgresql ×1
sass ×1
showdown ×1
source-maps ×1
sysadmin ×1
typescript ×1
utf-8 ×1
vim ×1