我正在尝试创建一个Heroku节点任务,从Firebase和console.log中读取数据.
我的节点脚本(位于/ bin目录中)是:
require('dotenv').config({ silent: true });
var firebase = require('firebase');
firebase.initializeApp({
serviceAccount: {
projectId: process.env.fb_projectId,
clientEmail: process.env.fb_clientEmail,
privateKey: process.env.fb_privateKey
},
databaseURL: process.env.fb_databaseURL
})
console.log(process.env.fb_privateKey);
firebase.database().ref('tasks').once('value', function(snapshot) {
console.log(snapshot.val());
process.exit();
})
Run Code Online (Sandbox Code Playgroud)
除了之外fb_privateKey,所有env变量都是正确的,因为它包含\n字符.
我的本地.env文件和Heroku环境变量都包含一个名为key的键fb_privateKey,一个值作为带有\n字符的字符串- 用".包围.
fb_privateKey="-----BEGIN PRIVATE KEY-----\nMY-PRIVATE-KEY\n-----END PRIVATE KEY-----\n"
Run Code Online (Sandbox Code Playgroud)
当我在本地运行脚本时,它会使用新行+从Firebase返回的任务向我记录私钥.但是,当我在Heroku上运行它时,(heroku run myScript)会记录带有\n字符的私钥(作为单行),并且无法从Firebase读取数据(可能是由于一个错误的私钥).有任何想法吗?
我正在尝试创建一个简单的gulp任务,它获取所有bower.json依赖项并将它们注入我的index.html文件.
这就是我的gulpfile.js的样子:
var gulp = require('gulp');
var bowerFiles = require('main-bower-files');
var inject = require('gulp-inject');
gulp.task('default', function() {
gulp.src('./public/index.html')
.pipe(inject(gulp.src(bowerFiles({
paths: {
bowerDirectory: './public/bower_components',
bowerJson: './public/bower.json'
}
}), {read: false}), {name: 'bower'}))
.pipe(gulp.dest('./build'));
});
Run Code Online (Sandbox Code Playgroud)
它有效.这就是我的index.html在./build目录下的样子:
<!-- bower:js -->
<script src="/public/bower_components/zepto/zepto.js"></script>
<!-- endinject -->
Run Code Online (Sandbox Code Playgroud)
但是,我无法使main-bower-files获取我的缩小的依赖项(在此示例中,包含'/public/bower_components/zepto/zepto.min.js').
我试过这个覆盖选项:
{
"overrides": {
"BOWER-PACKAGE": {
"main": "**/*.min.js"
}
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
{
"overrides": {
"BOWER-PACKAGE": {
"main": {
"development": "*.js",
"production": "*.min.js",
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它不起作用:(
我究竟做错了什么?
提前致谢!!
这是我的webpack.config.js文件:
const webpack = require('webpack');
const path = require('path');
module.exports = {
cache: true,
devtool: 'source-map',
entry: {
app : [
'./src/index.js'
],
vendor: ['lodash']
},
output: {
filename: 'bundle.js',
path: path.join(__dirname, 'dist'),
publicPath: '/dist/',
pathinfo: true
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loaders: ['babel'] },
{ test: /\.scss/, exclude: /node_modules/, loaders: ['style', 'css', 'sass'] }
]
},
plugins: [
new webpack.NoErrorsPlugin(),
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.bundle.js', Infinity)
]
};
Run Code Online (Sandbox Code Playgroud)
这是我运行webpack-dev-server的脚本:
const webpack =require('webpack');
const WebpackDevServer = require('webpack-dev-server'); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用mocha,chai和sinon(我的第一次!)测试我的asyn thunk中间件功能.
请考虑我的文件:
ayncActionCreators.js
export const fetchCurrentUser = () => {
return (dispatch) => {
setTimeout(dispatch, 100);
}
};
Run Code Online (Sandbox Code Playgroud)
ayncActionCreators.spec.js
//...
it('Should work', () => {
const dispatch = sinon.spy();
const action = fetchCurrentUser();
action(dispatch);
expect(dispatch.called).to.be.true;
});
Run Code Online (Sandbox Code Playgroud)
我还没有实现fetchCurrentUser函数 - 只是假设它需要一些"服务器"时间然后它将调用'dispatch()'.
由于异步流,规范失败.如果我在期望之前添加一个101毫秒的setTimeout - 它会通过.
我的代码将使用一些返回promise的DB API,因此async函数最终将如下所示:
//...
return (dispatch) => {
return dbAPI.fetchUser().then(dispatch(....));
}
Run Code Online (Sandbox Code Playgroud)
所以我试图要求dbAPI并在测试中创建一个sinon.stub().returns(Promise.resolve())并且它也不能正常工作(我认为,因为存根返回一个已解析的promise - 异步函数将像一个同步功能).
任何想法我应该如何测试这样的异步函数?
谢谢,阿米特.
我正在尝试创建我的第一个webpack项目,但我找不到一种方法来将表示输出bundle.js中的模块的数字键更改为描述性字符串,以便在调试器中更容易跟踪它. .
我已经尝试了output.chunkFilename和output.sourceMapFilename但没有成功.
这是我的gulp任务的样子:
gulp.task('webpack', function (done) {
webpack({
entry: {
app: paths.src + "/main.js",
vendor: ['react/addons', 'lodash']
},
output: {
path: paths.dist,
filename: "bundle.js",
sourceMapFilename: '[file].js'
},
plugins: [
new webpack.optimize.CommonsChunkPlugin("vendor", 'vendor.bundle.js', Infinity)
]
}, function onWebpackComplete(err, stats) {
if (err) throw new gutil.PluginError("webpack", err);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
它甚至可能吗?我用错了吗?有没有更好的办法?
谢谢!
我试图了解为什么我的简单柴(使用柴不可变)测试失败。
it('should work', () => {
var currentState = Immutable.fromJS({
name: 'myName',
age: 20,
friends: []
});
var newState = currentState.merge({
name: 'someOtherName',
age: 30
});
expect(newState).to.equal(Immutable.fromJS({
name: 'someOtherName',
age: 30,
friends: []
}));
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我想我缺少了一些愚蠢的东西...
谢谢,阿米特。
javascript ×5
chai ×2
webpack ×2
commonjs ×1
firebase ×1
gulp ×1
heroku ×1
immutable.js ×1
mocha.js ×1
redux ×1
redux-thunk ×1
sinon ×1