Abbiamo un progetto che utilizza TypeScript con ts-loader in Webpack, per la maggior parte delle cose che abbiamo utilizzato ora c'erano definizioni di tipi in Tipi definiti (tramite typings
), ma non per quello che volevamo usare ora: redux-auth
.Come importare JS semplice in TypeScript (senza digitazioni)
In un primo momento non avevo module
definita nel tsconfig.json e l'importazione via
import { EmailSignInForm } from "redux-auth/bootstrap-theme"
provocato Cannot find module
. Quindi leggiamo che l'uso della notazione CommonJS potrebbe essere d'aiuto, ma non lo era, dal momento che TS non sapeva dei membri del modulo importato (Property 'EmailSignInForm' does not exist on type '{}'
). L'utilizzo del percorso relativo non fa nulla di utile.
Inoltre ho letto in this article about TS 1.8 che ora dovrebbe supportare file JS semplici, ma non spiega esattamente come. allowJs è abilitato.
Come si importa quel modulo? Grazie!
Questo è il nostro webpack.config.js:
var webpack = require('webpack');
var fail = require('webpack-fail-plugin');
module.exports = {
entry: './static/files/app/main.tsx',
output: {
path: './static/files/',
filename: 'bundle.js',
sourceMapFilename: '[file].map'
},
resolve: {
extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
},
]
},
devtool: 'source-map',
plugins: [
fail,
new webpack.ProvidePlugin({
//Promise: 'exports?global.Promise!es6-shim',
fetch: 'imports?this=>global!exports?global.fetch!whatwg-fetch'
})
]
};
e la nostra tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"jsx": "react",
"sourceMap": true,
"allowJs": true,
"noEmitOnError": true
},
"files": [
"typings/browser.d.ts"
],
"exclude": [
"typings/main.d.ts",
"typings/main",
"node_modules"
]
}
(Il "module": "commonjs"
era temporanea per testare la notazione CommonJS)
UPDATE :
Ok, quindi se ho declare var require: any
e utilizzo il percorso relativo in require()
posso importarlo, anche se dubito che questo sia il modo previsto. Stranamente ora ottengo questo messaggio da Webpack:
WARNING in ./~/encoding/lib/iconv-loader.js
Critical dependencies:
9:12-34 the request of a dependency is an expression
@ ./~/encoding/lib/iconv-loader.js 9:12-34
ERROR in ./~/iconv-lite/encodings/tables/gb18030-ranges.json
Module parse failed: ./node_modules/iconv-lite/encodings/tables/gb18030-ranges.json Line 1: Unexpected token :
You may need an appropriate loader to handle this file type.
Questo è il modo previsto da ciò che ho raccolto – Angad
La mia risposta qui potrebbe aiutare: http://stackoverflow.com/questions/37656592/define-global-variable-with-webpack/40416826#40416826 – prograhammer