2016-07-28 5 views
1

I Node.js v6.3.1 und ncp v2.0.0 mitnode.js und ncp Modul - nicht einzelne Datei

ich nur ncp bekommen bin kopieren können den Inhalt eines Verzeichnisses zu kopieren, aber nicht eine einzelne Datei in diesem Verzeichnis. Hier

ist der Code, den Inhalt eines Verzeichnisses kopiert rekursiv, das funktioniert:

var ncp = require("ncp").ncp; 
ncp("source/directory/", "destination/directory/", callback); 

... und hier ist der gleiche Code, aber mit einer Datei als Quelle:

var ncp = require("ncp").ncp; 
ncp("source/directory/file.txt", "destination/directory/", callback); 

Aus Das alles, was ich denken kann ist, dass NCP wurde speziell entwickelt, Verzeichnisse rekursiv zu kopieren, nicht einzelne Dateien vielleicht?

Ich hatte über etwas wie fileSystem read/write Stream-Funktionen wie beschrieben here gedacht, aber wirklich für die Konsistenz, die ich gehofft hatte, mit ncp zu bleiben.

Update:

ich ein anderes Paket node-fs-extra genannt gefunden, das tut, was ich ohne die Notwendigkeit, möge für mich Event-Handler auf die Operationen hinzuzufügen, wie ich mit dem Dateisystem Lese-/Schreib-Lösung zu tun haben würde. Hier

ist der Code, der funktioniert:

var fsExtra = require("fs-extra"); 
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback); 

Offensichtlich ist dies noch inkonsistent ist, aber zumindest ist etwas weniger ausführlich.

+0

Mit Blick auf ihren Quellcode scheinen sie in der Lage zu sein, nur eine Datei zu kopieren. Ich denke nicht, dass es wichtig ist, aber für Ihr Bewusstsein müssen Sie nicht '.ncp()' auf dem Modul aufrufen, Sie könnten einfach '(' ncp ')' benötigen und das resultierende Objekt ist dasselbe wie das Aufrufen von ' .ncp() 'darauf, für ...Gründe dafür. Ihr Code ist ein bisschen fugly. – Paul

+0

@Paul könnten Sie ein Beispiel für die Syntax liefern, damit ich weiß, wo ich mit der Verwendung falsch liege, danke. – Jeremy

+0

Es ist die Syntax, die Sie noch verwendeten. Sie setzen buchstäblich: 'module.exports = ncp; ncp.ncp = ncp; 'Keine Ahnung warum. Es wäre also immer noch etwas wie const ncp = require ('ncp'); ncp (src, dest, cb); ' – Paul

Antwort

2

Ok Ich habe herausgefunden, was ich falsch gemacht habe.

Ich habe versucht, eine Datei in ein Verzeichnis zu kopieren, wo ich die Datei in einem Verzeichnis kopieren und benennen musste.

So, hier ist mein ursprünglicher Code, der nicht funktioniert:

var ncp = require("ncp"); 
ncp("source/directory/file.txt", "destination/directory/", callback); 

... und hier ist der feste Code arbeitet, bemerkt die Aufnahme eines Dateinamen in dem Zielverzeichnis:

var ncp = require("ncp"); 
ncp("source/directory/file.txt", "destination/directory/file.txt", callback); 

Es sieht also so aus, als würde ncp die Datei nicht so nehmen, wie sie ist, sondern Sie müssen den Dateinamen am anderen Ende angeben, um erfolgreich zu kopieren. Ich nehme an, dass ich nur die Datei mit dem gleichen Namen in das Zielverzeichnis kopieren würde.

+0

Thx !!! Ich machte soooo den gleichen Fehler –

0

Ich habe ein anderes Paket namens node-fs-extra gefunden, das tut, was ich will, ohne dass ich Event-Handler zu den Operationen hinzufügen muss, wie ich es mit der Dateisystem-Lese-/Schreiblösung tun würde. Hier

ist der Code, der funktioniert:

var fsExtra = require("fs-extra"); 
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback); 

Offensichtlich ist dies noch inkonsistent ist, aber zumindest ist etwas weniger ausführlich.

Verwandte Themen