npm install “aucun fichier ou répertoire '.../paquet.json " ” pour les modules personnalisés
J'ai quelques dossiers liés à d' node_modules
afin d'être en mesure de import
sous forme de modules. Par exemple, j'ai src/client/apps/admin
répertoire qui est lié symboliquement à node_modules/@admin
. Mais mnp me donne ces avertissements lorsque j'essaie d'installer ou de retirer des modules
$ npm i -S connect-roles
...
npm WARN ENOENT ENOENT: no such file or directory, open '/Users/Admin/Code/www/learn/src/client/apps/admin/assets/package.json'
npm WARN ENOENT ENOENT: no such file or directory, open '/Users/Admin/Code/www/learn/src/client/apps/admin/components/package.json'
npm WARN ENOENT ENOENT: no such file or directory, open '/Users/Admin/Code/www/learn/src/client/apps/admin/reducers/package.json'
npm WARN ENOENT ENOENT: no such file or directory, open '/Users/Admin/Code/www/learn/src/client/apps/admin/package.json'
Bien sûr, je peux juste ajouter package.json
pour chaque dossier, mais je ne veux pas. Il y a une autre meilleure façon de le faire. Qui est là?
PS: mnp v3.5.3
Vous devez vous connecter pour publier un commentaire.
Que vous essayez d'utiliser les nœuds module
require
/import
dans une manière qui est lié à vous causer des problèmes plus tard. Il serait beaucoup mieux à la structure de votre projet de façon à en finir avec ces liens symboliques.Lors de l'importation d'un module, vous pouvez spécifier un module de base, un module installé à l'intérieur de vos projets node_modules, ou un chemin relatif:
Modules de base (par exemple
require('http')
)Modules de base sont inclus en tant que partie de nœud et peuvent être importés simplement par son nom.
Modules installés (par exemple
require ('bluebird')
)Les Modules qui ont été installés via
npm
, et sont à l'intérieur de vos projets _node_modules_ répertoire, peut être installé en utilisant le nom déclaré dans leurpackage.json
.Les chemins d'accès relatifs (par exemple
require('../settings/menu')
)Les Modules (qui pourraient être des fichiers avec pas de définition de package) peuvent être importés en utilisant un chemin relatif à partir de l'importation de fichier.
Parce que vous n'êtes pas fournir une
package.json
, mnp est un échec parce qu'il ne parvient pas à la recherche de laname
de la propriété de chaque paquet. Vous serez beaucoup mieux si vous avez simplement besoin de ces fichiers à l'aide d'un chemin d'accès relatif.Par exemple, si votre projet ressemble à quelque chose comme:
Vous pouvez importer un fichier à l'autre avec un chemin relatif.
Par exemple, dans
components.js
:require ('./assets')
Ou dans
thing.js
:require ('../assets')
Si vous avez beaucoup de très imbriquées les chemins, cela peut devenir un peu lourd, mais il y a un certain nombre de façons cela peut être traitée. Une méthode consiste à utiliser
path.resolve()
qui permettra de résoudre le chemin d'accès relatif, étant donné un chemin dans le projet de la route.Par exemple:
require ('../assets')
pourrait être réécrite comme
require (path.resolve('app/admin/assets'))
Cela a le beau résultat de tous vos besoin chemins de l'être "absolue" de votre projet de racine.
Vous pouvez en lire plus suggéré des façons de composer avec cette Meilleur require() chemins pour Node js
import some from '../../../../../../some_module'
ouimport some from '../../../../../client/apps/admin/components/pages/some-page'
Aucune réponse ne m'a aidé à résoudre le problème j'ai donc créé mon propre paquet module-alias, qui est fortement inspiré par
app-module-path
. Cette formule permet l'enregistrement d'alias de répertoires pour une utilisation ultérieure avecrequire
/import
.Exemple:
Lisez le fichier readme pour plus d'exemples
Essayer cette commande: