当我将一些参数放入 URL 时,有时会收到错误,该错误应该是有效的请求,如“400 OK”。
相同的 URL 和参数在 99% 的情况下都可以工作,但我发现日志中突然出现错误。
这是由于某些因素而可能发生的晦涩的事情,还是我的应用程序特有的东西导致了奇怪的标题的混杂?如果前者没有答案,我猜是后者:)
更新
对于注释,“它”是编写的一个相对简单的 RESTful API。现在它几乎总是返回正确的标头,例如 400 和错误正文或 200 和正常正文。当错误标头到达 Web 客户端时,Web 客户端会使用收到的消息 ping 报告 URL,以便我们可以区分 Web 应用程序和移动应用程序之间的 API 错误。据我们所知,没有任何代码组合可以使这个“400 OK”地狱。但鉴于我们的代码混乱之外似乎不可能发生这种情况,因此我将进行更深入的研究。
更新2
好吧,我已经比以前更深入地研究了我们的框架,并与一些开发人员进行了交谈。
它通过 AJAX 调用 API 将信息返回给浏览器。
浏览器检测到“400 OK”并将其发送回我们的服务器,我们在服务器上收到了这个奇怪的报告。没有人亲眼目睹过这种情况的发生,但日志显示它正在发生。
我们的代码库中实际上有零个代码会返回 400 OK,因为我们的 HTTP 标头处理程序中唯一的 400 是“400 bad request”
我现在想知道我是否遇到了一些浏览器/jquery/ajax bug。
UPDATE 3(因为你不能获得太多信息)
我检查了浏览器如何发现问题。根据 jQuery $.ajax 的报告,失败时会触发回调。然后我们有这样的代码:
xhr.always(function() {
  var request = [ this.type, this.url, this.data ].join(' '),
      response = [ xhr.status, xhr.statusText, xhr.responseText ].join(' ');
  $.ajax({ 
    url   : REPORTING_URL,
    type  : …这可能是一个天真的问题,但我正在学习jQuery Mobile并且不确定为什么一切都与data-role属性相关.似乎即使角色与风格有关,他们也会使用data-role它class
我理解,对于语义而言,data-role在很多情况下都有意义,但它似乎在这里被滥用了.那种查找也不会慢吗?
他们为什么要data-role在课堂上使用?
感谢您的任何见解.
我在堆栈上找不到任何好的答案 - 它们与对话框、文本编辑器有关,并且有人使用 VBScript。
我需要向开窗器发送消息。这在 FF、Chrome 和 Opera 中工作正常,但window.opener在 IE8-10 中为空。
我用来window.open让新窗口出现。
我什至尝试过这个:
var new_window = window.open( url, '_social', "height=600,width=600" );
if ( !new_window.opener ) {
  new_window.opener = window;
}
打开的窗口只有一个脚本标签,如下所示:
<script type="text/javascript">
var data = {
  type : 'redirect',
  destination : '<?= $destination; ?>'
};
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
</script>
我打开控制台并记录了window.opener结果为空,所以我认为它与 DOM 是否准备好有任何关系。
该窗口在登陆带有 script 标记的页面之前会重定向几次。
我想放弃使用,jest.resetModules因为我想重置两个模块,但在所有运行中保留一个模块。
我原来让事情正常工作的代码是这样的:
beforeEach(() => {
  jest.resetModules();
  require('hooks/useMyProvider');
  const useMyProvider = require('#/');
  api = useMyProvider(); // scoped above
})
然后在每次测试中,我都会做这样的事情:
// Mock hook since we can't spy on a function
jest.doMock('#/hooks/useActive', () => {
  return () => {
    return [true]
  }
});
// re-require the component that requires useActive so it pulls latest mock
let MyComponent = require('#/components/MyComponent')
const { container } = render(<MyComponent />);
我尝试重构为useMyProvider在文件顶部定义一次并jest.resetModules从 ; 中beforeEach删除
然后我这样做了:
let MyComponent;
jest.isolateModules(() => …我有一个钩子useEffect。我注意到useEffect运行的次数不会超过两次,因为在一次rerender使用不同数据的调用之后,后续调用不会获取更新的数据。
export default function(lookForUsername) {
  const [dashboardHref, setDashboardHref] = useState(`https://www.example.com/`);
  useEffect(() => {
    // this is where I have code that i want to 
    // run on re-render, but it won't because it stops getting updated
  }, [lookForUsername]);
  return [dashboardHref];
}
我的测试发生了这种情况
// this will log false, false on first run
const { rerender, waitForNextUpdate } = renderHook((lookForUsername=false, otherOption=false) => {
  console.log(lookForUsername, otherOption);
  return useMyHook(lookForUsername);
});
console.log('first re-render');
// this will make the console …我正在为运行带有旧版Node的Chromium嵌入式框架(CEF)的应用程序编写插件。
我把webpack和babel放到了应用程序中。当我运行webpack时,它在具有const fs = require('fs');或任何其他默认节点程序包的文件上失败。我的代码和依赖项都在发生这种情况:
Module not found: Error: Can't resolve 'fs' in '/Users/me/repositories/myrepo/node_modules/chokidar'
我.babelrc的如下:
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": true
        }
      }
    ]
  ]
}
我的webpack配置实质上是:
module.exports = {
  entry: './src/main.jsx',
  mode: process.env.NODE_ENV,
  devtool: isDev ? 'eval-source-map' : false,
  output: {
    path: PLUGINDIR,
    filename: 'main.js',
    libraryTarget: 'umd'
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          plugins: ['transform-react-jsx']
        }
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'] …我目前有我的商店设置.各种事物触发事件来更新商店,从而更新道具下游.当触发某些内容以在多个组件中进行更新时,这非常方便.
对于没有其他组件关心的事情,使用状态是反模式吗?
我基本上有一个组件是一个表单的页面.编辑表单更新状态(即选择一个选项会使其他选项更改).我想当用户点击保存时,我会触发商店的事件来获取新数据.点击取消只会返回到另一个页面,因此稍后返回将只是从商店状态重新填充.
那有意义吗?
我有这样的测试:
String dir = "/foo";
String fileName = "hello.txt";
String pathString = dir + "/" + fileName;
String text = "hello world!";
MyTask task = new MyTask();
FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
Path foo = fs.getPath(dir);
Files.createDirectory(foo);
Path hello = foo.resolve(fileName);
Files.write(hello, ImmutableList.of(text), StandardCharsets.UTF_8);
task.setFileSystem(fs);
String fileValue = task.readFile(pathString);
// Doing this just shows "fail whale: hello world!"
// fail("fail whale: " + fileValue); 
// Failure from here adds brackets
assertEquals(text, fileValue);
我这样失败了:
org.junit.ComparisonFailure: expected:<hello world![]> but was:<hello world![
]>
如果我反转参数,我可以看到它 …
如何在doAsyncThing不抛出异常的await情况下捕获异常?每次运行doAsyncThing都是幂等的,因此我只希望所有操作“同时”发生,然后结束该过程。我意识到即使我把 a 放在try/catch里面map,它实际上也不会在那里捕获它,因为那时它不在同一个线程中。
const promises  = entities.map(entity => {
  return entity.doAsyncThing();
});
await Promise.all(promises);
javascript ×4
reactjs ×3
node.js ×2
react-hooks ×2
air ×1
babeljs ×1
css ×1
es6-promise ×1
http ×1
http-headers ×1
java ×1
jestjs ×1
jquery ×1
junit ×1
react-hooks-testing-library ×1
react-redux ×1
webpack ×1