相关疑难解决方法(0)

我什么时候应该使用花括号进行ES6导入?

这似乎是显而易见的,但我发现自己对于何时使用花括号在ES6中导入单个模块感到困惑.例如,在我正在处理的React-Native项目中,我有以下文件及其内容:

initialState.js
var initialState = {
    todo: {
        todos: [
            {id: 1, task: 'Finish Coding', completed: false},
            {id: 2, task: 'Do Laundry', completed: false},
            {id: 2, task: 'Shopping Groceries', completed: false},
        ]
    }
};

export default initialState;
Run Code Online (Sandbox Code Playgroud)

在TodoReducer.js中,我必须在没有花括号的情况下导入它:

import initialState from './todoInitialState';
Run Code Online (Sandbox Code Playgroud)

如果我initialState用大括号括起来,我会得到以下代码行的错误:

无法读取未定义的属性待办事项

TodoReducer.js:
export default function todos(state = initialState.todo, action) {
// ...
}
Run Code Online (Sandbox Code Playgroud)

使用花括号的组件也会发生类似的错误.我想知道何时应该使用大括号进行单次导入,因为很明显,当导入多个组件/模块时,你必须将它们用大括号括起来,我知道.

编辑:

所谓张贴在这里并没有回答我的问题,而不是我问的时候我应不应该用花括号用于导入单个模块,或者我不应该用花括号中ES6导入单个模块(这显然不是例如,我已经看过需要花括号的单个导入)

javascript import ecmascript-6

669
推荐指数
11
解决办法
16万
查看次数

何时使用"import*as Foo"与"import Foo"?

我正在将BackboneJS(v1.2.2)项目转换为ES6 w/BabelJS.

我注意到以下两者之间存在差异:

import Backbone from 'backbone'
Run Code Online (Sandbox Code Playgroud)

和

import * as Backbone from 'backbone'
Run Code Online (Sandbox Code Playgroud)

看完这里我了解到,前者是进口骨干的默认出口那里,因为后者可以让我"导入整个模块,并通过属性的符号是指其命名为出口."

我很难理解这些之间的区别.在两个实例中都返回对象,但前者似乎使用其他属性/方法进行修饰.至少我认为导入"整个模块"将有更多的属性/方法......但我看到相反的情况.

javascript import ecmascript-6

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

Tensorflow.js使用节点保存模型

我想使用此功能从node.js保存经过训练的模型

async function tfModelExperiment(model) {
  try {
    let tsModelTraining = await model.save('file:///tmp/my-model-1');
  } 
  catch (error) {
    console.log(error);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是在保存模型时会返回

(节点:23756)UnhandledPromiseRejectionWarning:错误:找不到URL'file:/// tmp / my-model-1'的任何保存处理程序

我发现另一个人正在为这个问题而苦苦挣扎,但是通过解决这个问题

const tf = require('@tensorflow/tfjs');
Run Code Online (Sandbox Code Playgroud)

我已经尝试过将目录更改为我的主目录,但这不能解决问题,也不能以sudo身份运行它,我该怎么办?

软件 我使用Ubuntu的Ubuntu 18.04.1 LTS与故宫安装了最新的TensorFlow.js包(0.13.0)

编辑:

应该注意的是我尝试过

import * as tf from '@tensorflow/tfjs';
import '@tensorflow/tfjs-node';
Run Code Online (Sandbox Code Playgroud)

如此处提供的(https://github.com/caisq/tfjs-node),它将返回

TypeError:tf.sequential不是位于ModuleJob.run(internal / loader / ModuleJob.js:94:14)的file:///home/sjors/node.mjs:7:18处的函数

我尝试过:

const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');
Run Code Online (Sandbox Code Playgroud)

返回与UnhandledPromiseRejectionWarning以前相同的错误

javascript node.js async-await tensorflow tensorflow.js

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

导出 * as bar VS 导出 { 默认为 bar }

两者有什么区别

export * as bar from 'foo'
Run Code Online (Sandbox Code Playgroud)

和

export { default as bar } from 'foo'
Run Code Online (Sandbox Code Playgroud)

在我的具体情况下,我尝试了以下两种方法,它们都有效,想知道它们之间的根本区别。

// echarts v5.0.0
export * as ECharts from 'echarts/lib/echarts.js'
export { default as ECharts } from 'echarts/lib/echarts.js'
Run Code Online (Sandbox Code Playgroud)

babel.config.js

module.exports = {
  // "@vue/cli-plugin-babel": "~4.5.0",
  presets: ['@vue/cli-plugin-babel/preset'],
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

如何使用react-test-renderer/shallow与typescript?

我想用来react-test-renderer/shallow测试我的反应组件.

但是当我 import ShallowRenderer from 'react-test-renderer/shallow';

tsc 给我一个错误 'Module '"/Users/dulin/workspace/react-ts-webpack2/node_modules/@types/react-test-renderer/shallow/index"' has no default export.

那么,如何import ShallowRenderer用typescript

- 更新 -

最后,我从index.test.tsx- > 更改我的测试文件名index.test.jsx以避免由此tsc引起的错误definition.

import * as React from 'react';
import * as TestUtils from 'react-dom/test-utils';
import * as ShallowRenderer from 'react-test-renderer/shallow';
import PanelHead from '../';

describe('PanelHead test suites', () => {

  it('t-1', () => {

    const renderer = new ShallowRenderer();
    renderer.render(<PanelHead />)
    const result = renderer.getRenderOutput();

    expect(result.type).toBe('div');

  }); …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs

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

在 cluster.on 上使用 babel 的 ES6 和 ES2016 之间的不同行为

我正在尝试使用集群来利用多核 CPU 的优势。用代码:

var cluster = require('cluster');

if (cluster.isMaster) {
    for(var i = 0; i < 2; ++i) {
        cluster.fork();
    }
    cluster.on('exit', function (worker) {
        console.log('Worker ' + worker.process.pid + ' exitted.');
    });
} else {
    console.log('Worker ' + cluster.worker.process.pid);
    process.exit(0);
}
Run Code Online (Sandbox Code Playgroud)

节点与输出完美配合

Worker 14058
Worker 14064
Worker 14058 exitted.
Worker 14064 exitted.
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试import与 babel 一起使用时,我遇到了问题:

import *  as cluster from 'cluster'

if (cluster.isMaster) {
    for(let i = 0; i < 2; ++i) {
        cluster.fork();
    }
    cluster.on('exit', (worker) …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 ecmascript-2016

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