2017-04-14 1 views
1

Ich verwende Webpack, um Abhängigkeiten zu laden. Und einer der Abhängigkeit ist wie unten geschrieben:Webpack meldet einen Fehler über Unerwartetes Zeichen '#'

#! /usr/bin/env node 

'use strict' 

var Parser = require('jsonparse') 
    , through = require('through') 

webpack gab mir folgende Fehler:

ERROR in ./~/JSONStream/index.js 
Module parse failed: /Project/node_modules/JSONStream/index.js Unexpected character '#' (1:0) 
You may need an appropriate loader to handle this file type. 
| #! /usr/bin/env node 

Es scheint, dass der Charakter # nicht von webpack erkannt wird. Gibt es einen Loader, mit dem ich diese Art von js-Datei laden kann?

+0

Stellen Sie sicher, dass sich die Knotenbinärdateien in Ihrem Umgebungspfad befinden und entfernen Sie die Zeile '#!/usr/bin/env node' und sehen, ob es funktioniert. –

+0

entfernen Sie diese Zeile funktioniert gut, aber es ist eine Third-Party-Bibliothek Ich kann den Quellcode nicht ändern. –

+0

Sie können den [shebang-loader] (https://github.com/javascriptismagic/shebang-loader) verwenden. –

Antwort

2

Die Shebang#!/usr/bin/env node zeigt an, dass es ein ausführbares Skript ist, das kein Modul zur gleichen Zeit sein sollte. Bibliotheksdateien und ausführbare Dateien sollten getrennt sein, da eine CLI nur eine Möglichkeit zur Verwendung der Bibliothek darstellt. Wenn Sie die Bibliothek selbst verwenden, möchten Sie den CLI-Teil sicher nicht in Ihrer Anwendung verwenden.

Wie auch immer, es gibt immer noch einen Weg um dies. Sie können die shebang-loader verwenden, die in der webpack issue #2168 erwähnt wurde. Fügen Sie es einfach zu Ihrer .js Regel hinzu, damit die Zeile entfernt wird.

+1

Können Sie ein Beispiel zeigen? Es gibt viele Probleme, diesen Loader zum Laufen zu bringen, und der Repo hat keine Beispiele, was nicht hilfreich ist, da die Zeile (var command = require ("shebang! ../ bin/command");) diesen Fehler verursacht. Fehler: Modul kann nicht gefunden werden "Shebang! ../ bin/Befehl". –

+0

Dies ist der Fehler im bekommen für den Versuch, den shebang-loader Fehler in./Node_modules/fsevents/node_modules/rc/index.js Modul Parse fehlgeschlagen:/Benutzer/joseph/Documents/WebDevWorkspace/mvp_frontend/node_modules/fsevents /node_modules/rc/index.js Unerwartetes Zeichen '#' (1: 0) Möglicherweise benötigen Sie einen geeigneten Loader, um diesen Dateityp verarbeiten zu können. | #!/usr/bin/env Knoten | var cc = require ('./ lib/utils) | var join = require ('path') join Es ist in einem node_modules Ordner, also möchte ich nicht einfach gehen und die Zeile löschen, jede Hilfe wird großartig, Danke –

+1

@ JMStudios.jrichardson Seit webpack 2 können Sie nicht Wenn Sie das Suffix '-loader' weglassen, löst es den Loader wörtlich auf. Es wäre 'require (" shebang-loader! ./ bin/command ")' Oder du kannst es deiner '.js' Regel in deiner Webpack-Konfiguration hinzufügen, z. '{test: /\.js$/, benutze: ['babel-loader', 'shebang-loader']}'. –

Verwandte Themen