小编red*_* 87的帖子

ESLint - 错误:必须使用导入来加载 ES 模块

我目前正在使用 React、TypeScript、样式组件、 Webpack等设置样板,在尝试运行ESLint时遇到错误:

\n
\n

错误:必须使用 import 来加载 ES 模块

\n
\n

这是错误的更详细版本:

\n
/Users/ben/Desktop/development projects/react-boilerplate-styled-context/src/api/api.ts\n  0:0  error  Parsing error: Must use import to load ES Module: /Users/ben/Desktop/development projects/react-boilerplate-styled-context/node_modules/eslint/node_modules/eslint-scope/lib/definition.js\nrequire() of ES modules is not supported.\nrequire() of /Users/ben/Desktop/development projects/react-boilerplate-styled-context/node_modules/eslint/node_modules/eslint-scope/lib/definition.js from /Users/ben/Desktop/development projects/react-boilerplate-styled-context/node_modules/babel-eslint/lib/require-from-eslint.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.\nInstead rename definition.js to end in .cjs, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js reactjs eslint

198
推荐指数
2
解决办法
16万
查看次数

赛普拉斯 - cy.visit() 尝试加载失败

问题
我正在为 Cypress 运行集成测试,该测试在本地运行良好,但在 Gitlab 中运行时失败。我收到的错误是在使用cy.visit()导致以下错误的命令时发生的:

CypressError: `cy.visit()` failed trying to load:
http://localhost:3000/ The response we received from your web server
was:
  404: Not Found
Run Code Online (Sandbox Code Playgroud)

配置
我使用以下命令启动测试:

tests:
  image: cypress/base:10
  stage: tests
  script:
    - npm ci
    - npm run test:ci
Run Code Online (Sandbox Code Playgroud)

这些命令在我的中看起来像这样package.json

      "scripts": {
        "start:ci": "serve dist --no-clipboard --listen ${PORT:-3000}",
        "test": "cross-env NODE_ENV=test && npm run test:jest && npm 
run test:cypress",
        "test:ci": "start-server-and-test start:ci http://localhost:3000 test",
        "test:cypress": "cypress run --headless",
        "test:jest": "jest",
      },
Run Code Online (Sandbox Code Playgroud)

研究
我调查了这个错误,发现这个线程帮助我稍微理解了这个问题。然后我尝试将以下配置添加到我的 …

javascript node.js cypress

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

AWS-CDK 和 Gitlab 返回错误:spawnSync docker ENOENT

我正在尝试运行一个 Gitlab 管道,通过 cdk-synth 命令构建 AWS-CDK 项目。我遵循了网上关于应该在 Gitlab 运行程序中使用哪些图像的建议,但遇到了以下错误:

错误:spawnSync docker ENOENT

我不确定这个错误到底意味着什么,我猜它正在尝试启动 docker (由命令使用cdk synth)但未能这样做。同样,我在网上找到的所有内容都建议使用我当前拥有的设置:

image: node:16.3.0-alpine

stages:
  - build
  - test
  - .post

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .npm
    - node_modules

build:
  tags:
    - mytag
  environment: ${CI_COMMIT_BRANCH}
  stage: build
  script:
    - npm i
    - cdk synth --no-staging > template.yaml
  artifacts:
    paths:
      - cdk.out
    expire_in: 30 mins
Run Code Online (Sandbox Code Playgroud)

我真的对这个迷失了,它可能正盯着我看,但有人可以给我指出正确的方向,为什么当我使用的图像本身就是一个 docker 容器时我会收到此错误?

amazon-web-services npm gitlab docker

14
推荐指数
3
解决办法
9353
查看次数

不能GET /与gulp-connect-php

我正在使用gulp-connect-php尝试使用BrowserSync在本地运行php服务器.这是我的gulp配置文件:

var gulp = require('gulp'),
    connect = require('gulp-connect-php'),
    browserSync = require('browser-sync');

gulp.task('connect-sync', function() {
  connect.server({}, function (){
    browserSync({
        server: {
            baseDir: "app"
        },
     // proxy: '127.0.0.1:8000'
    });
  });

  gulp.watch('**/*.php').on('change', function () {
    browserSync.reload();
  });
});

gulp.task( 'default', [ 'connect-sync' ] )
Run Code Online (Sandbox Code Playgroud)

当我在我的app目录中有一个index.html文件时,上面的代码有效,但当我用index.php文件替换它时,我得到以下消息:

不能获取 /

不完全确定我在这里做错了什么?

javascript php node.js gulp

13
推荐指数
1
解决办法
1286
查看次数

下一个js和Apollo-Cookie未通过

我正在将Next JS与Apollo结合使用,并在with-data HOC中使用以下配置对其进行了设置:

import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { HttpLink } from 'apollo-link-http';
import { onError } from 'apollo-link-error';
import { withClientState } from 'apollo-link-state';
import { getMainDefinition } from 'apollo-utilities';
import { ApolloLink, Observable, split  } from 'apollo-link';
import { WebSocketLink } from 'apollo-link-ws';
import withApollo from 'next-with-apollo';
import { SubscriptionClient } from 'subscriptions-transport-ws';

import { endpoint, prodEndpoint, WSendpoint, WSprodEndpoint } from '../config';

import defaults from '../apollo-state/graphql/default-state';
import Mutation from '../apollo-state/resolvers/mutation-resolvers'; …
Run Code Online (Sandbox Code Playgroud)

javascript apollo reactjs graphql next.js

11
推荐指数
1
解决办法
638
查看次数

无服务器部署 - 未找到功能 - sls 部署

我正在尝试通过无服务器 CLI 部署无服务器功能,但出现以下错误:

发生错误:GenerateDownloadLinkLambdaFunction - 未找到函数:

奇怪的是,我已经为另一个阶段部署了这个函数qa,它部署得很好,但dev它只是抛出了上述错误。

如果我尝试从 AWS 控制台手动创建函数并部署它,Lambda 函数菜单会显示该函数是在 X 秒前部署的,但是它不会显示我serverless.yml在我的机器上的文件中的任何设置。

还值得注意的是,我已经设法在dev舞台上部署了此功能,但我不小心将其删除了。从那时起,它拒绝重新部署。

我一直在用头撞墙,想知道我做错了什么,但找不到任何东西,以前有没有其他人遇到过类似的 Serverless 问题?

amazon-web-services aws-lambda serverless-framework

11
推荐指数
2
解决办法
6189
查看次数

S3:HeadObject - 返回 403 响应

我有一个无服务器服务,在 serverless.yml 文件中使用以下配置运行:

service: tableau-export-rest

custom:
  dev:
    tableauBookmarksBucket: tmt-${self:provider.stage}-tableau-bookmarks
  qa:
    tableauBookmarksBucket: tmt-${self:provider.stage}-tableau-bookmarks
  prod:
    tableauBookmarksBucket: tmt-${self:provider.stage}-tableau-bookmarks

provider:
  name: aws
  runtime: nodejs12.x
  region: eu-west-1
  stage:  ${opt:stage, 'dev'}
  timeout: 900
  memorySize: 3008
  environment:
    TABLEAU_BOOKMARKS_BUCKET: ${self:custom.${self:provider.stage}.tableauBookmarksBucket}
  iamRoleStatements:
    - Effect: Allow
      Action:
        - s3:PutObject
        - s3:GetObject
        - s3:ListBucket
      Resource: "arn:aws:s3:::${self:custom.${self:provider.stage}.tableauBookmarksBucket}/*"
    - Effect: Allow
      Action:
        - lambda:InvokeFunction
      Resource: "arn:aws:lambda:*"

functions:
  saveBookmark:
    handler: index.saveBookmark
    timeout: 30
    events:
      - http:
          path: /save-bookmark
          method: post
          cors: 
            origin: '*'
Run Code Online (Sandbox Code Playgroud)

saveBookmark函数看起来像这样:

  const params = {
    Bucket: process.env.TABLEAU_BOOKMARKS_BUCKET,
    Key: 'ABC123' …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 amazon-web-services serverless

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

带Lambda的Graphql瑜伽游乐场 - "服务器无法联系到"

我正在使用servlerless/lambda设置graphql端点,并且在尝试连接到graphql-yoga附带的graphql playground时收到错误.当我去我的路线有操场(/playground)它启动操场界面,但它只是说:

无法访问服务器

在操场的右上角.值得注意的是我正在使用该makeRemoteExecutableSchema实用程序代理另一个graphql端点(这是我的CMS称为Prismic).我不相信这是问题,因为我在普通快递服务器上测试时已成功连接到操场.

这是我的handler.js中的代码

'use strict';

const { makeRemoteExecutableSchema } = require('graphql-tools');
const { PrismicLink } = require("apollo-link-prismic");
const { introspectSchema } = require('graphql-tools');
const { ACCESS_TOKEN, CMS_URL } = process.env;
const { GraphQLServerLambda } = require('graphql-yoga')

const lambda = async () => {
  const link = PrismicLink({
    uri: CMS_URL,
    accessToken: ACCESS_TOKEN
  });

  const schema = await introspectSchema(link);

  const executableSchema = makeRemoteExecutableSchema({
    schema,
    link,
  });

  return new GraphQLServerLambda({ 
    schema: executableSchema,
    context: req => …
Run Code Online (Sandbox Code Playgroud)

javascript node.js aws-lambda graphql

9
推荐指数
1
解决办法
478
查看次数

Apollo订阅-处理Web与SubscribeToMore断开连接

我一直在寻找一种方法来处理带有Apollo订阅的React应用程序中的Web套接字断开连接,但没有找到一种方法。我在阿波罗文档中看到的其他示例显示了以下捕获重新连接的方法:

  const wsClient = process.browser ? new SubscriptionClient(WSendpoint, {
    reconnect: true,
  }) : null;

  const wsLink = process.browser ? new WebSocketLink(wsClient) : null;

  if (process.browser) {
    wsLink.subscriptionClient.on(
      'reconnected',
      () => {
        console.log('reconnected')
      },
    )
  }
Run Code Online (Sandbox Code Playgroud)

上面的方法有两个问题:

  1. 是当用户断开其互联网连接时(仅从服务器出于某种原因重新启动时)无法捕获
  2. 在我的React应用程序组件之外触发了重新连接。

我想做的是,如果用户断开与互联网的连接或者我的特快服务器由于任何原因停机,则重新加载我的“聊天”组件。为此,我需要聊天组件完全重新加载,但我不确定从组件树外部是否可以重新加载。

QuerySubscriptionApollo组件中是否有一种方法可以捕获此事件并从组件中进行相应处理?

javascript websocket apollo graphql

9
推荐指数
1
解决办法
450
查看次数

Next.js - 理解 getInitialProps

我有一个使用 next.js 和 Apollo/Graphql 的应用程序,我正在尝试完全了解getInitialProps生命周期挂钩的工作原理。

getInitialProps在我的理解中,生命周期用于设置一些初始道具,这些道具将在应用程序首次加载时呈现服务器端,可以使用从数据库中预取数据以帮助 SEO 或只是为了提高页面加载时间。

我的问题是这样的:

每次我有一个query组件在我的应用程序中获取组件中的一些数据时,我是否必须使用getInitialProps以确保数据将在服务器端呈现?

我的理解也是getInitialProps它只适用于页面索引组件(以及在 中_app.js),这意味着组件树中较低的任何组件都无法访问此生命周期,并且需要从上往下获取一些初始道具在页面级别,然后让它们向下传递组件树。(如果有人能证实这个假设,那就太好了)

这是我的代码:

_app.js(在/pages文件夹中)

import App, { Container } from 'next/app';
import { ApolloProvider } from 'react-apollo';

class AppComponent extends App {
  static async getInitialProps({ Component, ctx }) {
    let pageProps = {};
    if (Component.getInitialProps) {
      pageProps = await Component.getInitialProps(ctx)
    }
    // this exposes the query to the user
    pageProps.query = ctx.query;
    return { pageProps }; …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs isomorphic-javascript graphql next.js

9
推荐指数
1
解决办法
7294
查看次数