typescript - Modulimport returnerer tomt objekt
Jeg prøver å lage en npm-modul ved å bruke Webpack og TypeScript. Etter å ha bygget pakken min og prøvd å importere den, får jeg et tomt objekt, og ikke min standard eksporterte funksjon.
Du kan se min konfigurasjon :
Webpack.js :
const webpack = require('webpack');
const path = require('path');
const config = {
entry: './src/index.ts',
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.ts(x)?$/,
use: ['awesome-typescript-loader'],
exclude: /node_modules/
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1
}
},
'postcss-loader'
]
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
]
},
resolve: {
extensions: ['.tsx', '.ts', '.js']
}
};
module.exports = config;
tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"strict": true,
"noImplicitReturns": true,
"noImplicitAny": true,
"module": "commonjs",
"moduleResolution": "node",
"target": "es5",
"allowJs": true
},
"include": ["./src/**/*"]
}
Modulen min er bygget, men standardimporten returnerer et tomt objekt. Jeg har prøvd med eksempel-funksjonen:
const test = () => console.log('test');
export default test;
import test from 'my-module-name'; test() // test is not a functionHar noen allerede laget en npm-modul ved å bruke webpack og typescript?
Takk, fellesskap!
Svar #1
Basert på denne tråden, må du legge til libraryTarget: "commonjs2" i din webpack-konfigurasjon.
Her er eksemplet:
module.exports = {
...
output: {
path : path.resolve(__dirname, 'dist'),
filename : '[name].js',
libraryTarget : 'commonjs2' // Add this line
},
...
}
Jeg har implementert denne løsningen før, og den fungerer også på TypeScript + Webpack med lignende problem.
