【问题标题】:Cannot find module 'path'找不到模块“路径”
【发布时间】:2018-08-24 17:28:55
【问题描述】:

我正在尝试学习 Typescript,并认为我也应该在 .ts 中进行 webpack 配置。这是我的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;

还有我的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"
  }
}

我在运行 npm run build 时遇到的错误是:

TS2307: Cannot find module 'path'

我也尝试过要求路径,但后来我得到一个不同的错误,说它找不到模块要求。

似乎是什么问题?

【问题讨论】:

  • 你跑npm install --save path了吗?
  • @mhatch path 是 node 中的全局模块,默认可用

标签: javascript typescript webpack


【解决方案1】:

这应该会有所帮助

npm i @types/node -D

Typescript 需要为 any 模块输入类型,除非该模块不是用 typescript 编写的。

【讨论】:

  • 这工作谢谢!也许作者可以接受这个作为答案
  • 不要忘记将"types": ["node"] 添加到 tsconfig.json。 (stackoverflow.com/a/56799541/4808079)
  • @SephReed 不,这不是必需的。 @types 文件夹中的类型会自动加载。除非有我不知道的新规则
  • 我正在使用 monorepo,因此与通常的工作流程有很多不同。添加这个解决了一个问题。
  • 这个依赖解决了我的问题。谢谢!
【解决方案2】:

首先,webpack 配置文件不需要 .ts 扩展名。它只是构建捆绑包的内部目的。使用普通的 .js 文件。

Webpack 不是由浏览器运行的,它由 Node Js 运行,它运行 webpack 模块并根据配置进行捆绑。

现在Node Js了解它自己的模块系统是require

所以它会像下面这样: require 下面是 Node Js 模块导入语法。

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

【讨论】:

  • 在 typescript 中编写 webpack 配置意味着您的配置经过类型检查并帮助您避免错误。 OP 专门询问如何在打字稿中进行这项工作
【解决方案3】:

尝试使用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;

然后运行npm run build

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2011-07-06
    • 2021-11-16
    相关资源
    最近更新 更多