我似乎一辈子都无法弄清楚如何调试通行证策略。我只是在概念上做错了什么吗?我已经在这个问题上敲了大约 10 个小时,但还没有接近一点。
这是我第一次使用护照。在这种特殊情况下,我使用的是passport-jwt。我知道对象键不正确,但我只是尝试使用 console.log() 跟踪通过服务器的路径,所以我了解事情是如何工作的。我什至没有达到passport.use( new JwtStrategy(..)).
我省略了不必要的代码。与我的 mongodb 的连接很好,我的猫鼬模式也很好。
我正在使用一个测试路由进行测试server.get('/fakelogin', ...),该路由对/api/login. 我也试过使用 acurl -X POST并修改 post 路由到 url 查询参数。我只是不断收到“未经授权”错误,而没有触发护照策略代码 console.log。
var server = express();
server.use(passport.initialize());
let opts = {
jwtFromRequest: ExtractJwt.fromBodyField('token'),
secretOrKey: config.apiKey,
algorithms: [ 'HS256', 'HS384' ],
ignoreExpiration: true
};
passport.use(new JwtStrategy(opts, function( jwt_payload, done ) {
// mongoose users query against JWT content
return done(null, true); // EDIT: test to finish flow
}));
server.use('/api', routes);
server.listen(8000);
Run Code Online (Sandbox Code Playgroud)
当我试图滚动到"参考"时,我无法弄清楚出了什么问题.我一直在疯狂地搜索并找到了完全合理的网址,但它在我的场景中无效.
我有一个使用react 15.4.2以及react-router 3.0.0的应用程序.我有一个路由到一个组件,该组件采用可选的路由参数,并尝试使用它来滚动到componentDidUpdate()上的元素.我尝试了几种不同的方法,但在遵循ref.scrollIntoView()的最新实现时,我收到错误...
scrollIntoView不是一个函数
我确保在componentDidUpdate()时存在"ref回调".
我只是缺少像使用.createClass()这样的东西,你在使用类定义时遇到的方法是缺少的还是我接近这个完全错误的方法?
我可以跳到使用一个包,但是这样的事情是无法理解当我像我一样可以打扰我的时候发生了什么.
代码已经过简化,以便在保持类似流程的同时展示问题.代码语法可能存在差异.
APP
const App = React.createClass({
render() {
return (
<Router history={ appHistory }>
<Route path='home' component={ Home }>
<IndexRoute component={ Page } />
<Route path='page(/:itemIndex)' component={ Page } />
</Route>
<Route path='add-new-item' component={ AddNewItem } />
</Router>
)
}
});
Run Code Online (Sandbox Code Playgroud)
HOME 只是一个包含导航栏的包装器,可以根据活动索引呈现子项
添加新项目 是一个组件,它将转到/页面/ [新创建的项目的索引]
页
const Page = React.createClass({
getInitialState() {
return {
data: undefined,
scrollTo: parseInt(this.props.params.goalIndex) || undefined
};
},
componentWillMount() {
// this gets data and …Run Code Online (Sandbox Code Playgroud) 我想更好地理解在webpack中如何实现promise的区别.通常情况下,由于我主要开发应用程序,幸福的无知已经足够了,但我肯定对如何正确开发插件/工具/库有点困惑.
webpack.config.js - 使用babel-polyfill作为入口点
module.exports = {
entry: {
foo: [
'core-js/fn/promise', <-- here
'./js/index.js'
]
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
问:在这种方法中,因为它是一个polyfill,它修改了全局Promise?
webpack config - 使用webpacks填充提供插件
module.exports = {
entry: './js/index.js',
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
},
plugins: [
new webpack.ProvidePlugin({
Promise: 'es6-promise' <-- here
})
]
};
Run Code Online (Sandbox Code Playgroud)
问:这是否意味着Promise是一个仅针对webpack捆绑流程的模块?已转换的ES5代码是否具有本地副本或es6-promise?它会修补全球承诺吗?
webpack.config.js - 使用babel-plugin-transform-runtime
module.exports = {
entry: {
foo: [
'./js/start.js'
] …Run Code Online (Sandbox Code Playgroud) 也许我很傻,但是我真的不明白如何阅读Microsoft bot框架sdk的node.js版本。我试图弄清楚如何在ConsoleConnector bot中使用beginDialogAction()或endConversationAction()。该文档说它在触发时会注册一个动作,但没有提及如何触发它。我想利用它可以在正常流程之外的调用堆栈中间添加对话框的想法。
抱歉,我无法提供代码,但是我可以提供此代码...
var connector = new builder.ConsoleConnector().listen();
var connector = new builder.ConsoleConnector().listen();
var bot = new builder.UniversalBot(connector);
bot.dialog('/', [
function( session ) {
builder.Prompts.text(session, "blah blah blah?");
},
function( session, results ) {
// ...
session.beginDialog('/foo');
session.endDialog();
}
]);
bot.dialog('/foo', [
function( session, args ) {
// ...
},
function( session, results ) {
// ...
session.endDialog();
}
]);
bot.use({ botbuilder: function( session, next ) {
// CALL …Run Code Online (Sandbox Code Playgroud) javascript ×3
node.js ×2
babeljs ×1
botframework ×1
chatbot ×1
dom ×1
express ×1
passport.js ×1
polyfills ×1
react-router ×1
reactjs ×1
webpack ×1