这似乎是显而易见的,但我发现自己对于何时使用花括号在ES6中导入单个模块感到困惑.例如,在我正在处理的React-Native项目中,我有以下文件及其内容:
initialState.jsvar 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导入单个模块(这显然不是例如,我已经看过需要花括号的单个导入)
我正在将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)
看完这里我了解到,前者是进口骨干的默认出口那里,因为后者可以让我"导入整个模块,并通过属性的符号是指其命名为出口."
我很难理解这些之间的区别.在两个实例中都返回对象,但前者似乎使用其他属性/方法进行修饰.至少我认为导入"整个模块"将有更多的属性/方法......但我看到相反的情况.
我想使用此功能从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以前相同的错误
两者有什么区别
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) 我想用来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) 我正在尝试使用集群来利用多核 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 ×5
ecmascript-6 ×3
import ×2
async-await ×1
node.js ×1
reactjs ×1
tensorflow ×1
typescript ×1