環境
webpack 4.41.2
typescript 3.7.2
問題点
webpackを使用し、ts, tsxファイルをcompileしていたがdevelop modeの時は問題無し。
しかしproduction modeではtype scriptのエラーが大量にでる
→ production modeでひとまずbuildさせる方法はないか模索中です
コード
webpackconfig
1{ 2 mode: "development", 3 entry: "./src/index.tsx", 4 output: { 5 path: `${__dirname}/dist`, 6 filename: "index.js" 7 }, 8 module: { 9 rules: [ 10 { 11 test: /.tsx?$/, 12 use: "ts-loader" 13 }, 14 { 15 test: /.svg$/, 16 loader: "react-svg-loader", 17 options: { 18 svgo: { 19 plugins: [ 20 { removeTitle: false } 21 ], 22 floatPrecision: 2 23 } 24 } 25 }, 26 { 27 test: /.(vert|frag|glsl)$/, 28 use: { 29 loader: 'webpack-glsl-loader' 30 } 31 } 32 ] 33 }, 34 // import 文で.tsや.tsxファイルを解決 35 resolve: { 36 extensions: [".ts", ".tsx", ".js", ".json"] 37 }, 38},
tsconfig
1{ 2 "compilerOptions": { 3 "sourceMap": false, 4 "target": "es5", 5 "module": "es2015", 6 "jsx": "react", 7 "moduleResolution": "node", 8 "lib": [ 9 "es2019", 10 "dom" 11 ], 12 "removeComments": true, 13 "noUnusedLocals": false 14 15 //**ちなみに以下2つ試してみたが"Unknown compiler option"のエラー 16 "no-consecutive-blank-lines": false, 17 "no-unused-variable": false, 18 } 19}
よろしくお願いいたします。
(追記)エラー内容
ERROR in /var/www/hoge/src/index.tsx [tsl] ERROR in /var/www/hoge/src/index.tsx(56,33) TS2322: Type '(page: any) => void' is not assignable to type 'void'. ERROR in /var/www/hoge/src/about/index.tsx [tsl] ERROR in /var/www/hoge/src/about/index.tsx(15,48) TS2339: Property 'appRef' does not exist on type 'About'. ERROR in /var/www/hoge/src/gallery/index.tsx [tsl] ERROR in /var/www/hoge/src/gallery/index.tsx(8,27) TS2307: Cannot find module './picturesData'. ERROR in /var/www/hoge/src/gallery/index.tsx [tsl] ERROR in /var/www/hoge/src/gallery/index.tsx(9,9) TS2529: Duplicate identifier 'Promise'. Compiler reserves name 'Promise' in top level scope of a module containing async functions. ...以下省略 40個程
追記2
エラー部分のコード抜粋
private changePage = (page): void => {
this.setState({
tmpPageName: page,
isHide: true,
});
};
//error (これは引数に型を書くのを忘れていたため起きたエラーとわかりました)
TS2322: Type '(page: any) => void' is not assignable to type 'void'.
import {Promise} from "q"; private async setPictures(): Promise { for(let i = 0; i < pictures.name.length; i++) { const meshPic = await this.setMeshOfPic(pictures.name[i]); this.organizePicPos(i, meshPic); this.scene.add(meshPic); } } //error TS2529: Duplicate identifier 'Promise'. Compiler reserves name 'Promise' in top level scope of a module containing async functions.
(同じ階層にpictureDataというjsonファイルがある) import * as pictures from "./picturesData"; //error TS2307: Cannot find module './picturesData'.
追記3
以下を試してみましたが、結果は同じでした。
//tsconfig.jsonに下記コード追加 strict: false
回答1件
あなたの回答
tips
プレビュー