小编Naf*_*Joy的帖子

"type": "module" in package.json throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath)

我想在我的 nodejs 项目中使用 import 而不是使用 require。所以,我补充说,

"type": "module"
Run Code Online (Sandbox Code Playgroud)

在我的package.json 中

import index from './index.js';
Run Code Online (Sandbox Code Playgroud)

server.js 中

当我跑

节点服务器.js

错误说,

internal/modules/cjs/loader.js:1174
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: ....
Run Code Online (Sandbox Code Playgroud)

server.conf.js粘贴在下面。

import express from 'express';

import http from 'http';
let app = express();
let server = http.createServer(app);

import morgan from 'morgan';
import methodOverride from 'method-override';;
import path from 'path';

let port = process.env.PORT || …
Run Code Online (Sandbox Code Playgroud)

import node.js package.json

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

尝试导入错误:“useHistory”未从“react-router-dom”导出

useHistory 给出此错误:

无法编译 ./src/pages/UserForm/_UserForm.js 尝试导入错误:“useHistory”未从“react-router-dom”导出。此错误发生在构建期间,无法消除。

react-router-dom 版本:

4.3.1

代码:

import React, { useState, Fragment } from 'react';
import FormUserDetails from './FormUserDetails';
import FormPersonalDetails from './FormPersonalDetails';
import Confirm from './Confirm';
import Success from './Success';
import Button from '@material-ui/core/Button';
import { Grid, makeStyles } from '@material-ui/core';
import { useHistory } from 'react-router-dom';


function UserForm() {
    const [step, setStep] = useState(1);
    const history = useHistory();


    const StepButtons = (props) => (
        <React.Fragment>
            <Grid item xs={4}>
                {props.value !== 'initial' ?
                    <Button variant="outlined" className={classes.button} onClick={(e) …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

5
推荐指数
10
解决办法
9749
查看次数

将多个箭头函数作为 Promise 并打印来自箭头函数的所有解析的值

我正在尝试打印

['第一个电话!','第二个电话!' ]

我的代码:

function get(apiCalls) {
    return Promise.all(apiCalls)
}

//------------ START
let promise = get([
    () => Promise.resolve("First call!"),
    () => Promise.resolve("Second call!")
]);

if (promise) {
    promise.then((result) => result).catch((err) => console.log(err));
}
//------------ END
Run Code Online (Sandbox Code Playgroud)

但我得到输出:

[ [功能], [功能] ]

STARTEND的代码片段不能更改

javascript asynchronous promise ecmascript-6 arrow-functions

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

如何创建一个新的EventEmitter并注册“打开”和“关闭”事件监听器?

createEmitter 函数应该创建一个新的 EventEmitter 并注册“打开”和“关闭”事件侦听器。这些事件的回调应该分别是 onOpen 和 onClose 参数。opens 和 close 方法应该在 EventEmitter 上引发“open”和“close”事件,它们将作为发射器参数接收。每个发射器只能调用一次回调。

例如,执行以下代码后,应该打印“Opened!” 然后“关闭!”:

let emitter = createEmitter(
  () => console.log("Opened!"), () => console.log("Closed!")
);
opened(emitter);
closed(emitter);
Run Code Online (Sandbox Code Playgroud)

我的代码:

const events = require("events");
const myEmitter = new events.EventEmitter();

function createEmitter(onOpen, onClose) {    
myEmitter.on('open', onOpen); 
myEmitter.on('close', onClose);
}

function opened(emitter) {
myEmitter.emit('open', emitter); 

}
function closed(emitter) {
myEmitter.emit('close', emitter);
}

let emitter = createEmitter(
  () => console.log("Opened!"), () => console.log("Closed!")
);
opened(emitter);
closed(emitter);

module.exports.createEmitter = createEmitter;
module.exports.opened = opened;
module.exports.closed = …
Run Code Online (Sandbox Code Playgroud)

javascript events node.js eventemitter ecmascript-6

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