小编MLy*_*yck的帖子

使用npm install导入jQuery-ui和jQuery

在这里npm有点新鲜..

我想在我的项目中使用jQuery-ui.我习惯在我的HTML中使用脚本标记导入jQuery和jQuery-ui,但我想使用npm install导入它们.

我让jQuery一起工作.

import $ from 'jquery'
Run Code Online (Sandbox Code Playgroud)

但每当我尝试导入时,jquery-ui我都会收到此错误:

未捕获的ReferenceError:未定义jQuery

关于这个错误有很多帖子.但是所有这些似乎都围绕着人们,只是将jQuery和jQuery-ui的脚本标签放错了.

我找不到关于如何使用npm install安装jQuery和jQuery-ui的任何内容?

有任何想法吗?

javascript jquery jquery-ui npm

8
推荐指数
3
解决办法
9241
查看次数

用 Jest 模拟 Observable - rxjs

我有一个来自另一个 Observable 的简单 Observable 管道,我想测试它。

const loginState$ = messageBusObservables.loginState$.pipe(
    startWith({ isLoggedIn: false })
    pluck('isLoggedIn'),
    distinctUntilChanged()
  )
Run Code Online (Sandbox Code Playgroud)

messageBusObservables 是一个可观察对象。其中 loginState$ 是一个 Observable。

在我的测试中,我认为我可以轻松地像这样模拟“./messageBus”模块:(模块的导入方式无关紧要,但首选导入)

import { of } from 'rxjs'
import './messageBus'
jest.mock('./messageBus', () => ({
  loginState$: of({ isLoggedIn: true }),
}))
Run Code Online (Sandbox Code Playgroud)

但是,Jest 抛出错误:

babel-plugin-jest-hoist:模块工厂jest.mock()不允许引用任何范围外的变量。无效的变量访问: of

我试过,把它放在一个jest.fn()我试过提取of({ isLoggedIn: true })到一个变量中。但是我总是从玩笑中得到同样的错误。

那么如何使用 Jest 模拟输入到我的 Observable 中呢?我会在使用 .merge、.zip 等的其他 observable 中遇到同样的问题。

它需要是一个真正的 observable,是我其他 observable 的输入。我只是想用类似的东西来模拟值,of()而不是模拟一个对象,上面有一个方法,返回一个带有 .pipe 方法等的对象(我不想模拟 Observable 的功能)。我想通过在我的单元测试中设置一个值来传递一个真正的 observable。

我还需要这些模拟是动态的。因此,来自 1 个断言的模拟可能与下一个断言中的模拟不同。(用 beforeEach 之类的东西清除它们)

编辑: …

unit-testing mocking rxjs jestjs

6
推荐指数
1
解决办法
1万
查看次数

如何将 babel-emotion-plugin 与 Storybook + Typescript 结合使用?

我目前正在使用 Storybook (v.5.3.18) 和 TypeScript,并已成功按照说明设置我的 TypeScript webpack.config.js。这很好用。

但是,我似乎找不到任何方法可以成功地将 babel 插件添加到配置中。我的最新尝试如下,但不起作用。

module.exports = (baseConfig, env, config) => {
  config.module.rules.push({
    test: /\.(ts|tsx)$/,
    use: [
      {
        loader: require.resolve('awesome-typescript-loader'),
        options: {
          exclude: /node_modules/,
          presets: [['react-app', { flow: false, typescript: true }]],
          configFileName: './.storybook/tsconfig.json',
          babelOptions: {
            babelrc: false,
            presets: [],
            plugins: ['emotion'],
          },
        },
      },
      {
        loader: require.resolve('react-docgen-typescript-loader'),
        options: {},
      },
    ],
  });
  config.resolve.extensions.push('.ts', '.tsx');

  return config;
};
Run Code Online (Sandbox Code Playgroud)

如果我使用此配置启动 Storybook,我会继续看到消息“组件选择器只能与 babel-plugin-emotion 结合使用。”,这意味着 Storybook 没有选择 Emotion babel 插件。

我没有使用 CRA,只是使用普通的 React 和 Typescript。

这是我的 tsconfig:

{ …
Run Code Online (Sandbox Code Playgroud)

javascript emotion typescript babeljs storybook

6
推荐指数
1
解决办法
4089
查看次数

VSCode eslint 不拾取 tsconfig 路径

VSCode linting 似乎不尊重我在 tsconfig.json 文件中定义的路径。

从 tsconfig.json 中定义的“别名”导入任何内容时,出现以下错误。

在此输入图像描述

tsconfig.json:

{
  "compilerOptions": {
    "outDir": "./dist/",
    "module": "esNext",
    "strictNullChecks": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "allowJs": true,
    "jsx": "preserve",
    "skipLibCheck": true,
    "noUnusedParameters": true,
    "noUnusedLocals": true,
    "noImplicitAny": true,
    "noImplicitThis": true,
    "declaration": true,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "target": "es5",
    "lib": ["es5", "es6", "es7", "es2017", "dom"],
    "types": ["react", "jest", "node"],
    "baseUrl": ".",
    "paths": {
      "~*": ["./src/*"],
      "common/*": ["src/common/*"],
      "test/*": ["test/*"],
      "test-utils": ["test/test-utils.tsx"],
      "static/*": ["static/*"],
      "storybook/*": [".storybook/*"]
    },
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "resolveJsonModule": …
Run Code Online (Sandbox Code Playgroud)

typescript eslint tsconfig visual-studio-code

6
推荐指数
0
解决办法
3873
查看次数

在 app.js 中使用 Angular 导入/要求 NPM 模块的语法是什么?

我正在使用 Ionic 和 AngularJS 来构建一个移动应用程序。

我有一个必须使用的 API(由于愚蠢的保密协议,我不确定我能说些什么)。

但在文档中它需要一个npm install. 目前,我正在学习 Ionic,我想知道该怎么做?如何使用 Angular 导入我的 API 以便我可以拨打电话?

节点:

var api = require('npm-api'); (这个,但在 Angular 中。)

api.doSomething({...}); 等等...

所以这基本上就是它在 node.js 中的样子。我怎样才能用 Angular 做到这一点?我喜欢 Angular 的 MV*,尤其是对于这个 Ionic 移动应用程序,所以我想知道最好、最有效的方法是什么。

require npm angularjs ionic

5
推荐指数
0
解决办法
1398
查看次数

MongoDB更新到3.0后,Heroku应用程序崩溃

MongoDB今天强制我的Heroku服务器上的更新从2.6到3.0

现在我的应用程序在启动后不久崩溃并出现错误:

2015-10-01T10:22:27.405579+00:00 heroku[web.1]: State changed from crashed to starting
2015-10-01T10:22:42.457971+00:00 heroku[web.1]: Starting process with command `node server`
2015-10-01T10:22:46.278159+00:00 app[web.1]: memory, and will not scale past a single process.
2015-10-01T10:22:46.278136+00:00 app[web.1]: Warning: connect.session() MemoryStore is not
2015-10-01T10:22:46.278157+00:00 app[web.1]: designed for a production environment, as it will leak
2015-10-01T10:22:47.151118+00:00 app[web.1]: production server running at http://localhost:33827
2015-10-01T10:22:47.463775+00:00 heroku[web.1]: State changed from starting to up
2015-10-01T10:22:47.767430+00:00 app[web.1]: /app/node_modules/mongodb/lib/mongodb/connection/base.js:246
2015-10-01T10:22:47.767437+00:00 app[web.1]:         throw message;
2015-10-01T10:22:47.767439+00:00 app[web.1]:               ^
2015-10-01T10:22:47.767441+00:00 app[web.1]: MongoError: auth failed
2015-10-01T10:22:47.767443+00:00 app[web.1]:     at …
Run Code Online (Sandbox Code Playgroud)

heroku mongoose mongodb node.js heroku-toolbelt

5
推荐指数
1
解决办法
1677
查看次数

使用 Jquery AJAX 进行 Stripe 支付?(仅限 JavaScript)

我正在尝试为 Stripe 制作自定义付款表单,并且我想手动对 Stripe 进行 AJAX 调用。(而不是提交事件)

然而,首先我很确定我把它发布到了错误的地方。但我不知道我应该向哪个 URL 发出此 post 请求。

如果我使用正确的网址。我正在收到405 not allowed回复。没有关于我的请求有什么问题的信息。

这是我得到的:

Stripe.setPublishableKey('pk_test_12345');
    Stripe.card.createToken({
      number: ccNum,
      cvc: ccCVC,
      exp_month: ccMonth,
      exp_year: ccYear
    }, stripeResponseHandler);
Run Code Online (Sandbox Code Playgroud)

这部分工作正常,给我一个 200 OK 状态,并且我从服务器获得了一个令牌。

function stripeResponseHandler(status, response) {
      console.log('card status: ', status);
      console.log('token: ', response.id);
      $.ajax({
        type: 'POST',
        url: 'https://checkout.stripe.com/checkout.js',
        headers: {
          stripeToken: response.id
        },
        data: {
          number: ccNum,
          cvc: ccCVC,
          exp_month: ccMonth,
          exp_year: ccYear
        },
        success: (response) => {
          console.log('successful payment: ', response);
        },
        error: (response) => {
          console.log('error …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery stripe-payments

5
推荐指数
1
解决办法
1万
查看次数

TimescaleDB 查询以选择列值从前一行更改的行

最近才开始使用 TimescaleDB 和 postgrest 来处理大多数数据请求。

但是,我遇到了一个问题,即我对时间序列数据的请求效率极低。

这是一个数据系列,可以是任何时间长度,具有特定的整数值。

大多数情况下,除非出现异常,否则该值将相同。因此,而不是获取 +10,000 行数据。我想将其汇总为“时间块”。

假设连续 97 个项目的值为 100(每 5 分钟有一个新项目)#98 连续 5 个项目的值是 48,然后又回到 100 的另外 2,900 行。

我不想获取 3002 个项目来显示此数据。我应该只需要获取 3 个项目。

  • 1 项表示从 startDate 开始的值为 100
  • 1 项表示从 #1 之后的 startDate 开始的值为 48
  • 1 项表示从 #2 之后的 startDate 开始,该值再次为 100

但是我在弄清楚如何使用 timescaledb 做到这一点时遇到了一些麻烦。

基本上,如果该值与最后一个值相同,则将其聚合。这就是我需要它做的。

有谁知道如何使用连续聚合(或者如果有更快的方法)在 timescaleDB 中为这种情况构建 VIEW 来获取它?

postgresql timescaledb

5
推荐指数
1
解决办法
801
查看次数

反应管理:类型错误:(0,n.default)不是一个函数

从使用 next.js 切换到更简单的 Parcel/webpack 构建后,我已经尝试解决这个特定错误一个多星期了,但没有成功。

我不知道如何解决这个问题,所以我希望这里有人可以提供帮助。

完整错误:

TypeError: (0 , n.default) is not a function
    at admin.js:47
    at admin.js:23
    at Object.next (admin.js:4)
    at p (redux-saga-core.esm.js:1157)
    at yn (redux-saga-core.esm.js:1108)
    at redux-saga-core.esm.js:585
    at d (redux-saga-core.esm.js:56)
    at Y (redux-saga-core.esm.js:584)
    at redux-saga-core.esm.js:1204
    at h (redux-saga-core.esm.js:1271)
m @ io-6de156f3.js:111
Run Code Online (Sandbox Code Playgroud)

经过一段时间的研究后,我发现这个错误发生在 admin.ts 文件中的这一行:

https://github.com/marmelab/react-admin/blob/master/packages/ra-core/src/sideEffect/admin.ts#L29

现在真正奇怪的是,它似乎是从该./error导入导入 html,而不是实际的 JS 模块。

在此输入图像描述

但这个错误应该是一些 redux-saga 内容的生成器。

切换到 Parcel 后,完全被这个错误难住了。我认为包裹和反应管理之间可能存在一些奇怪的不兼容性。所以我把 Parcel 换成了更典型的 webpack 构建...但是错误仍然存​​在。所以这可能与构建工具无关。

现在让事情变得更加复杂。如果我手动进入并从反应管理代码中取出该错误导入和函数调用。

出现了一个新错误,'o' is not a function所以在我看来,有些事情严重搞砸了。

我根本没有改变react-admin的版本或实现。

这是使用“react-admin”:“^2.9.8”,

任何对此的帮助将不胜感激!

react-admin

5
推荐指数
0
解决办法
1347
查看次数

react-admin:隔离中的 SimpleForm

作为 Storybook 的忠实粉丝,我喜欢在隔离中测试我的组件。

特别是表格。

然而,我很难弄清楚如何让我的表单甚至单个表单字段单独工作。(没有编辑、创建、资源和管理包装所有内容)。

我基本上想要的只是渲染一个带有单个输入的 SimpleForm 组件,以对每个输入进行原型设计。(我使用自定义输入,因为我不喜欢 Material-ui)

我的输入是用 addField 装饰的,ra-core就像这个 textInput 示例:

import React from 'react';
import { addField } from 'react-admin';
import sanitizeRestProps from './sanitizeRestProps';
import { Input } from 'antd';
import Labeled from './Labeled';

const TextInput = ({ id, label, labelPosition, input, isRequired, ...rest }) => (
    <Labeled label={label} position={labelPosition} id={id} isRequired={isRequired}>
        <Input id={id} {...input} {...sanitizeRestProps(rest)} />
    </Labeled>
);

export default addField(TextInput);
Run Code Online (Sandbox Code Playgroud)

如果我尝试单独渲染此输入,则会收到错误“字段必须位于用 reduxForm() 装饰的组件内”

这是公平的...我想测试它在组件中构建时是否“有效”,所以我添加了一个 SimpleForm 包装器。

就像这样:

return (
        <SimpleForm>
            <TextInput label={label} …
Run Code Online (Sandbox Code Playgroud)

react-admin

5
推荐指数
1
解决办法
2140
查看次数