找不到模块“路径”

As *_*low 3 javascript typescript webpack

我正在尝试学习Typescript,并认为我也应该在中进行webpack配置.ts。这是我的webpack.config.ts

import * as webpack from 'webpack';
import * as path from 'path';

const config: webpack.Configuration = {
    entry: path.resolve('src/main.ts'),

    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            }
        ]
    },

    resolve: {
        extensions: ['.tsx', '.ts', '.js']
    },

    output: {
        filename: 'index.js',
        path: path.resolve( 'dist')
    }
}

export default config;
Run Code Online (Sandbox Code Playgroud)

以及我的package.json

  "main": "index.js",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "webpack --config devtools/webpack.config.ts --display-error-details",
    "post-build": "webpack-dev-server --config devtools/webpack.config.ts --mode development"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ts-loader": "^4.0.1",
    "ts-node": "^5.0.1",
    "typescript": "^2.7.2",
    "webpack": "^4.1.1",
    "webpack-cli": "^2.0.12",
    "webpack-dev-server": "^3.1.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

运行npm run build时出现的错误是:

TS2307: Cannot find module 'path'
Run Code Online (Sandbox Code Playgroud)

我也尝试过要求路径,但是随后出现另一个错误,提示它找不到模块要求。

似乎是什么问题?

Oma*_*imi 12

使用

"types": ["node"]
Run Code Online (Sandbox Code Playgroud)

正如tsconfig.json评论中提到的,为我解决了这个问题。


Nur*_*yev 11

这应该有帮助

npm i @types/node -D
Run Code Online (Sandbox Code Playgroud)

打字稿需要为任何模块打字,除非该模块不是用打字稿编写的。

  • 不要忘记将 `"types": ["node"]` 添加到 tsconfig.json。(/sf/answers/3975967901/) (10认同)
  • @SephReed 不,不需要这个。自动加载“@types”文件夹中的类型。除非有我不知道的新规则 (2认同)
  • 我在 monorepo 工作,因此与通常的工作流程有很多不同。添加这个解决了一个问题。 (2认同)

dea*_*904 -6

尝试使用require语法而不是import& 更改webpack.config.ts为以下代码

webpack.config.ts

const webpack = require('webpack');
const path = require('path');

const config: webpack.Configuration = {
    entry: path.resolve('src/main.ts'),

    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            }
        ]
    },

    resolve: {
        extensions: ['.tsx', '.ts', '.js']
    },

    output: {
        filename: 'index.js',
        path: path.resolve( 'dist')
    }
}

module.exports = config;
Run Code Online (Sandbox Code Playgroud)

然后运行npm run build