小编Ege*_*Ege的帖子

Jest 不会转换模块 - SyntaxError: 不能在模块外使用 import 语句

SyntaxError: Cannot use import statement outside a module无论我尝试过什么,我都无法摆脱这个错误,这让我非常沮丧。有大佬解决了这个问题吗?我已经阅读了一百万个 stackoverflow 和 github 问题线程。没有明确的解决方案。

这是一个 React、Typescript、Webpack 项目。我正在尝试测试一个模块。但 Jest 不会改变某种方式模块为普通的 javascript

我得到的错误是

/Users/me/dev/Project/project/node_modules/variables/src/variables.js:12
    import './main.js';
    ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      17 | 
      18 | */
    > 19 | import { GlobalVars } from 'variables'
         | ^
      20 | 
      21 | export const Vars = new GlobalVars()
      22 | 
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题(但没有奏效):

  • 使用env设置babel.configenv.test.preset: ['@babel/plugin-transform-modules-commonjs']

  • 修改transformJest 配置中的设置'^.+\\.jsx?$': 'babel-jest', '^.+\\.tsx?$': …

typescript jestjs babel-jest ts-jest

40
推荐指数
7
解决办法
4万
查看次数

无法让 `lodash.debounce()` 正常工作吗?多次执行...(反应,lodash,钩子)

我试图在范围输入移动时更新 React 中子组件的状态。而且,我想使用 Lodash 的 debounce 函数将更新函数触发到父组件的状态,这样我就不会在每次范围输入触发事件时都设置父组件的状态。

但是,在 debounce 延迟之后,所有事件都被触发了。好像我setTimeout在每个范围输入事件上连续调用函数,但不是debounce.

我在这里找不到我缺少的东西。如何在一系列范围输入事件后执行一次传递给“debounce”的函数?

我的简化代码如下所示:

import _ from 'lodash'
import React from 'react'

const Form: React.FC<Props> = props => {
    const [selectedStorageSize, setSelectedStorageSize] = React.useState(props.storageSize)

    const handleChangeAt = (field, payload) => {
      props.handleFormChangeAt(FormField.InstanceDefs, {
        ...form[FormField.InstanceDefs],
        [field]: payload,
      })
    }

    const debouncedChange = _.debounce(
     (field, payload) => handleChangeAt(field, payload),
     500,
   )

   return(
        <input
          required
          type="range"
          label="Storage Size/GB"
          min={50}
          max={500}
          value={props.selectedStorageSize}
          step={5}
          onChange={e => {
            setSelectedStorageSize(Number(e.target.value))
            debouncedChange(FormField.StorageSize, Number(e.target.value))
          }}
        />
  }
Run Code Online (Sandbox Code Playgroud)

lodash reactjs react-hooks

6
推荐指数
2
解决办法
3647
查看次数

为什么在使用 npm install 时,package-lock.json 会导致 docker 容器构建失败?

网上有很多人用不同的方式问同样的问题,但没有明确的答案。任何人都可以理解到足以解释为什么docker buildpackage-lock.json应用程序中存在文件时会失败,而当文件不存在时会成功运行吗?貌似跟npm有关,但是不清楚。

每个人都说删除package-lock.json,但它存在是有原因的。

注意: npm install在我的本地机器上工作正常,只是在 docker 容器中失败。

如果我有这个 Dockerfile:

# First Stage: Builder
FROM node:13.12.0-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
Run Code Online (Sandbox Code Playgroud)

并运行这个:

docker build -t container-tag ./
Run Code Online (Sandbox Code Playgroud)

我明白了:

npm WARN tar ENOENT: no such file or directory, open '/app/node_modules/.staging/eventsource-c2615740/example/index.html'
npm WARN tar ENOENT: no such file or directory, open '/app/node_modules/.staging/eventsource-c2615740/example/sse-client.js'
npm WARN tar ENOENT: no such file or directory, open …
Run Code Online (Sandbox Code Playgroud)

node.js npm docker package-lock.json

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