Wie bekomme ich dieses Typoskript Webpack Projekt zu kompilieren, ohne Fehler?
Ich versuche zu konvertieren nur zwei .js-Dateien zu .ts-Dateien von meinem webpack arbeiten node.js Projekt und kompilieren Sie es (Aktionen.ts und flux.ts). Beim laufen
webpack --progress --colors
Bekomme ich diesen Fehler:
FEHLER bei ./src/app/tools/flux.ts (2,11): Fehler TS2304: Cannot find-name 'benötigen'. FEHLER in ./src/app/tools/flux.ts (4,1): Fehler TS2304: Cannot find-name 'Modul'. FEHLER in ./src/app/actions/actions.ts (2,12): Fehler TS2304: Cannot find-name 'benötigen'. FEHLER in ./src/app/actions/actions.ts (11,1): Fehler TS2304: Cannot find-name 'Modul'.
Wie behebe ich diese bitte?
Können Sie sehen, meine Ordner-Struktur, und der code, den ich versuche zu kompilieren, auf der rechten Seite, in diesem screenshot:
Und hier ist mein webpack config, falls es hilft:
'use strict';
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var path = require('path');
var rootPath = __dirname; //site
var srcPath = path.join(rootPath, 'src'); //site/src
module.exports =
{
bail: true,
cache: true,
context: rootPath,
debug: true,
devtool: 'inline-source-map', //'eval-cheap-module-source-map','inline-source-map'
target: 'web',
devServer:
{
contentBase: './dist',
historyApiFallback: true
},
entry:
{
app: path.join(srcPath, 'app/actions/actions.ts'), //main.jsx
lib: ['react', 'react-router']
},
output:
{
path: path.join(rootPath, 'dist'),
publicPath: '',
filename: '[name].js',
library: ['[name]', '[name]'],
pathInfo: true
},
resolve:
{
root: srcPath,
extensions: ['', '.js', '.jsx', '.ts', '.tsx'],
modulesDirectories: ['node_modules', 'src', 'typings']
},
module:
{
loaders:
[
{test: /\.js?$/, loader: 'babel-loader?cacheDirectory', exclude: /(node_modules|bower_components)/ },
{test: /\.jsx?$/, loader: 'babel-loader?cacheDirectory', exclude: /(node_modules|bower_components)/ },
{test: /\.ts?$/, loader: 'ts-loader?cacheDirectory', exclude: /(node_modules|bower_components)/ },
{test: /\.tsx?$/, loader: 'ts-loader?cacheDirectory', exclude: /(node_modules|bower_components)/ },
{test: /\.scss?$/, loaders: ['style', 'css', 'sass']},
{test: /\.png?$/, loader: 'file-loader'},
{test: /\.jpg?$/, loader: 'file-loader'},
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?mimetype=image/svg+xml'},
{test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "file-loader?mimetype=application/font-woff"},
{test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "file-loader?mimetype=application/font-woff"},
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "file-loader?mimetype=application/octet-stream"},
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file-loader"},
]
},
plugins:
[
new CopyWebpackPlugin
([
{ from: 'src/images', to: 'images' }
]),
new webpack.optimize.CommonsChunkPlugin('lib', 'lib.js'),
new HtmlWebpackPlugin
({
inject: true,
template: 'src/index.html'
}),
new webpack.NoErrorsPlugin()
]
};
Haben Sie installiert
Ja, alles war vor der Arbeit ändern die zwei Dateien auf .ts. Ich habe alle npm-Module, und ich habe nun auch alle DefinitelyTyped Definitionen für die Module, die in den Testungen Ordner (obwohl ich weiß nicht, ob webpack Sie sehen kann)
alt
npm-Modul?Ja, alles war vor der Arbeit ändern die zwei Dateien auf .ts. Ich habe alle npm-Module, und ich habe nun auch alle DefinitelyTyped Definitionen für die Module, die in den Testungen Ordner (obwohl ich weiß nicht, ob webpack Sie sehen kann)
InformationsquelleAutor Richard | 2015-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler ist im Grunde Typoskript beschweren, dass es immer die JavaScript als ein CommonJS-Modul (
require
,module
), aber es erwartetimport
undexport =
. Die Quelle auf der Festplatte richtig ist, so etwas scheint sich zu transformieren, dass der code vor der Anreise nach Typoskript.Ich glaube, das Problem ist, dass TypeScript ist tatsächlich zweimal ausgeführt. Wenn Sie sich Ihre Lader, hast du Fragezeichen (
?
) am Ende eines jeden regex-Erweiterung. Ist, dass die letzten Buchstaben jeder Erweiterung optional, was falsch ist. In diesem Fall, eine.ts
Erweiterung angepasst werden, indem sowohl/\.ts?$/
und/\.tsx?$/
, und so webpack führt Typoskript zweimal für die gleiche Datei. Der erste Durchlauf funktioniert gut, aber der zweite Durchgang schlägt fehl, da es bereits umgestaltet worden.Sollten Sie entfernen das Fragezeichen aus so ziemlich alle Ihre loader-tests. Die Orte, wo das Fragezeichen ist, eine gute Idee für
tsx
undjsx
. So ein single-loader konfiguriert für/\.tsx?$/
richtig passen beide.ts
und.tsx
. Gleiches gilt fürjsx
.Jemand hat mir gesagt, hinzufügen /// <reference path="..\..\..\Testungen\alt\Taste alt.d....ts" /> an die Spitze meiner .ts-Datei. Das hat geklappt. Ich dachte webpack aufpassen würde, es automatisch, aber es sieht aus wie ich auf diese Verweise hinzufügen einzeln für jede Datei.
Sie brauchen nicht, um es hinzuzufügen, um jede Datei. Es muss nur einmal geladen werden, die für das ganze Programm. (so kann man sich die
/// <reference />
in Ihrer Eingabe-Datei, ODER noch besser, verwenden Sie tsconfig istfiles
array)Dank James Brantly, wenn Sie möchten, fügen Sie diese Antwort auf die Frage, die ich geöffnet ou einige Punkte: stackoverflow.com/questions/34018192/...
InformationsquelleAutor James Brantly
@Richard, vielleicht @Peter Varga Antwort können Sie helfen:
InformationsquelleAutor Eugene Bichel