javascript 找不到模块“path”

wixjitnu  于 2023-02-21  发布在  Java
关注(0)|答案(5)|浏览(185)

我正在尝试学习Typescript,我想我也应该用.ts来做我的webpack配置。

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'

我也尝试过required path,但是我得到了一个不同的错误,说它找不到模块require。
有什么问题吗?

qhhrdooz

qhhrdooz1#

这应该会有帮助

npm i @types/node -D

Typescript需要为 * 任何 * 模块键入类型,除非该模块不是用typescript编写的。

qncylg1j

qncylg1j2#

使用

"types": ["node"]

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

q8l4jmvw

q8l4jmvw3#

我不得不做这一切
1.[VS代码][终端]升级 typescript :npm i typescript/@latest -g
1.[VS代码][终端]安装节点类型:npm i @types/node --save-dev
1.[VS代码][tsconfig.json]添加类型:"compilerOptions": {types:["node"]}
1.[VS代码][资源管理器]删除package-lock.json和节点模块
1.[VS代码][终端]安装:npm install
1.[VS代码]重新启动VS代码
1.[VS代码][终端]测试:tsc

zdwk9cvp

zdwk9cvp4#

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

网络包配置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

2lpgd968

2lpgd9685#

首先,webpack配置文件不需要.ts扩展名。它只是构建捆绑包的内部用途。使用普通的.js文件。
Webpack不是由浏览器运行的,而是由Node Js运行的,Node Js运行Webpack模块并根据配置进行捆绑。
现在Node Js明白了自己的模块系统是require
所以它会像下面这样:下面的require为Node Js模块导入语法。

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

相关问题